第一章 基础

1.3.32 栈与队列融合的数据结构:链表实现

1.接口public interface ISteque

{

/**

* 进栈

* @param val 进栈元素

*/

void push(T val);

/**

* 出栈元素

* @return 返回出栈元素

*/

T pop();

/**

* 进队

* @param val 进队元素

*/

void enter(T val);

/**

* 获取元素个数

* @return 返回元素个数

*/

int getCount();

/**

* 返回队列是否为空

* @return 队列是否为空

*/

boolean empty();

/**

* 获取队列头

* @return 返回队列头部元素

*/

T getFront();

/**

* 获取栈顶元素

* @return 返回栈顶

*/

T getTop();

}

2.实现/**

* 链队列栈:循环链表表示

*/

//(push/pop)[h,5,4,3,2,1,2,3](enter)

public class LinkSteque implements ISteque

{

/**

* 头节点

*/

private Node head;

/**

* 尾节点

*/

private Node p;

/**

* 元素个数

*/

private int count;

/**

* 构造函数

*/

public LinkSteque()

{

this.head=new Node();

this.head.next=head;

this.p=head;

}

@Override

public void push(T val)

{

var t=new Node(val,head.next);

this.head.next=t;

this.count++;

//保证尾节点始终指向链表尾

if(this.count==1)

this.p=t;

}

@Override

public T pop()

{

if(this.empty())

throw new IndexOutOfBoundsException("队列空!");

var t=this.head.next;

var val=t.data;

this.head.next=t.next;

this.count--;

//空表的情况指向head就可以了

if(this.count==0)

this.p=this.head;

return val;

}

@Override

public void enter(T val)

{

var t=new Node(val,p.next);

p.next=t;

p=t;

this.count++;

}

@Override

public int getCount()

{

return this.count;

}

@Override

public boolean empty()

{

return this.count==0;

}

@Override

public T getFront()

{

if(this.empty())

throw new IndexOutOfBoundsException("队列空!");

return this.p.data;

}

@Override

public T getTop()

{

if(this.empty())

throw new IndexOutOfBoundsException("队列空!");

return this.head.next.data;

}

}

java负零_java数据结构从零基础到负基础相关推荐

  1. java类图_java UML类图的使用-UML基础-火龙果软件工程

    类图 是用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据.学习好类图的绘制,是一位合格的软件工程师应有的技能 ...

  2. java链表模型_Java数据结构和算法(七)——链表

    前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造 ...

  3. java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)

    队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear). (3)当队列中 ...

  4. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

  5. java link 使用_Java数据结构之简单的连接点(link)实现方法示例

    本文实例讲述了Java数据结构之简单的连接点(link)实现方法.分享给大家供大家参考,具体如下: 一.概述: 链接点由:数据和指向下个数据的指针构成 如图: 二.简单实现: package com. ...

  6. java自学语法_Java自学笔记(一):基础知识

    目录 第一个Java程序 public class HelloWorld { //类名必须与文件名相同 public static void main(String[] args) { System. ...

  7. java 链表算法_JAVA数据结构与算法之链表(一)

    单项链表 链表介绍: 链表是有序的列表,但是它在内存中是存储如下 1)链表是以节点的方式来存储, 是链式存储 2) 每个节点包含 data 域, next 域:指向下一个节点. 3) 如图:发现 链表 ...

  8. java邻接图_Java数据结构 - 图(邻接表存储)

    邻接表 相比邻接矩阵,邻接表要更加节省空间. 邻接表存储 本文将介绍邻接表存储有向带权图.图的例子如下. 图 介绍一下邻接表 上面的图对应的邻接表如下图所示: 邻接表 前面的数组存储的是所有的顶点,每 ...

  9. java零基础Ⅲ-- 4.Mysql基础

    java零基础Ⅲ-- 4.Mysql基础 MySQL安装配置 MySQL数据库的安装和配置 软件下载 特别说明 安装步骤 使用命令行窗口连接MYSQL数据库 Navicat 安装和使用 介绍:图形化M ...

最新文章

  1. Android实例-手机震动(XE8+小米2)
  2. 西南联大数学名师的“治学经验之谈”及启示
  3. mysql 按月建表_MySQL之存储过程按月创建表
  4. python 插值_有序点列的样条插值
  5. [framework] debuging
  6. using namespace cv
  7. extjs fileuploadfield default value
  8. string equals java_Java equals比较方法(Java StringEquals)
  9. 智芯传感ZXP4系列侵袭式压力传感器 为医疗器械智能升级注入新动能
  10. linux vim编辑矩阵乘,VIM使用系列:二进制文件编辑
  11. 光盘重装linux系统教程视频,重装系统?一步一步安装系统详细教程【带视频】。...
  12. 深圳市自助图书馆详细分布地址
  13. [CV]光场和它的各种
  14. Startup is Ready,Geek to Startup!
  15. Codeforces 1129 E.Legendary Tree
  16. 生成对抗网络 – Generative Adversarial Networks | GAN
  17. 张一鸣这条微博,就……有点害人不浅
  18. 离心泵CAE_1_CFturbo离心泵水力设计
  19. qq浏览器打开word 技术原理_实操:QQ群排名技术原理
  20. linux上搭建pppoe服务器,linux(centos)上搭建pppoe服务器

热门文章

  1. linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...
  2. 一台mysql数据库服务器_在一台服务器安装多个MySQL数据库
  3. 400是什么错误_我想对您说小学作文400字7篇
  4. USTB自习教室查询系统-项目计划书-第二部分
  5. HAOI(十二省联考)2019 qwq记
  6. eureka集群基于DNS配置方式
  7. bzoj 4094: [Usaco2013 Dec]Optimal Milking
  8. 利用stringBuilder操作html文件
  9. 转:c# 安装包制作
  10. 趣味思考--苹果剩余最大量