复习----使用链表实现队列(先进先出)及迭代
实现队列比实现栈的会多一点复杂,需要两个标记,first表示队头,last表示队尾。
链表结构
private class Node{Item item;Node next;}
迭代器
与实现栈的迭代器一模一样
private class Iterator implements java.util.Iterator<Item>{private Node p=first;@Overridepublic boolean hasNext() {return p!=null;}@Overridepublic Item next() {Item item=p.item;p=p.next;return item;}@Overridepublic void remove() {}}
源代码
static class queue<Item>{private Node first;//队头private Node last;//队尾private int N;private class Node{Item item;Node next;}private boolean isEmpty(){return first==null;}private int size(){return N;}private void enqueue(Item item){//入队Node oldlast=last;last=new Node();last.item=item;last.next=null;if(isEmpty()){//如果队列为空,则first需要和last指向相同first=last;}else {//队列不为空的话,就是正常情况直接last指向队尾的下一个位置(nulloldlast.next=last;}N++;}private Item dequeue(){//出队Item item=first.item;first=first.next;if(isEmpty()){//如果队里没有元素的话,last得为空last=null;}N--;return item;}private Iterator iterator(){return new Iterator();}private class Iterator implements java.util.Iterator<Item>{private Node p=first;@Overridepublic boolean hasNext() {return p!=null;}@Overridepublic Item next() {Item item=p.item;p=p.next;return item;}@Overridepublic void remove() {}}}
简单实例
public static void main(String[] args) {queue<Integer> stringqueue = new queue<Integer>();System.out.println("入队中... ...");for(int i=1;i<=9;i++){stringqueue.enqueue(i);}queue<Integer>.Iterator iterator = stringqueue.iterator();System.out.println("迭代中... ...");while(iterator.hasNext()){System.out.print(iterator.next()+" ");}System.out.println();System.out.println("---我是分割线---"+"\n"+"出队中... ...");while (!stringqueue.isEmpty()){System.out.print(stringqueue.dequeue()+" ");}if(stringqueue.size()==0){System.out.println("出队完毕!");}}
复习----使用链表实现队列(先进先出)及迭代相关推荐
- 复习----使用链表实现栈(后进先出)及迭代
使用链表进行模拟栈比用数组好用,考虑的要素也少还方便. 链表结构 private class Node{//链表结构Item item;Node next;} 迭代器 private class It ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- 数据结构链表之队列,Python3实现——7
数据结构链表之队列 队列概述 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取 队列可以使用顺序表(Python中 ...
- 链表,队列,堆栈的区别
链表,队列,堆栈的区别 1.栈是个有底的口袋,像袜子. 队列是没底的口袋,像通心粉. 所以:栈的特点是先进后出,队列的特点是先进先出. 2.主要区别是适用的地方不一样, 链表实际上可以认为是 ...
- java先进先出 循环队列_java队列--先进先出(循环队列、链队列)
队列:只允许在一端进行插入操作(队尾),在另一端进行删除操作(队头). 队列的特征就是: 先进先出. 队列的思想及实现也同样非常简单.在生活中的各种常常都需要排队进行,键盘中缓存区.操作系统中的作业调 ...
- 队列的实现(2):用链表实现队列
上一篇文章: http://blog.csdn.net/keheinash/article/details/51125063 利用数组实现了循环队列,这是静态的队列,缺点是需要预设大小,当队列满时,无 ...
- 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」必问之 链表 + 栈 + 队列 部分!
链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力.链表的操作也离不开指针,指针又很容易导致出错. 综合多方面的原因,链 ...
- C day18 高级数据表示(链表,队列)
这是C primer的最后一章了,前面已经学习了怎么创建变量,结构,数组,指针,会写函数,总之,把C作为工具层面的知识已经学完了,但是对于编程之路,这才算走完第一步,因为对于写程序最重要的是学习如何表 ...
- 链表,队列和栈的区别
链表,队列和栈都是数据结构的一种.Sartaj Sahni 在他的<数据结构.算法与应用>一书中称:"数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系 ...
最新文章
- WINCE对USB HOST供电的控制
- JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...
- Java-Web JSTL标签库、自定义标签库和MVC设计模式
- 十月 android版本分布,安兔兔发布2018年10月份Android手机性能排行榜
- 电脑无故弹出yyy102.html网页的解决办法(没办法,今天中招了)
- BugkuCTF-WEB题web16备份是个
- I9 9900K线程_收藏党抓紧了!英特尔停产i9-9900K特色包装,只因运输太浪费
- IDL实现高分一号数据辐射定标TASK(二)
- linux根据文件名统计文件数,如何统计 Linux 中文件和文件夹/目录的数量
- [4G5G专题-77]:流程 - 4G LTE 接入网的随机接入流程
- 刘德华郑秀文喜剧大片《魔幻厨房》DVD国语中字
- 空间句法软件Axwoman6.3 安装及ArcGIS 工具加载
- stm32控制半导体制冷器实现饮水机保温制冷功能
- python 串口示波器
- Imx6ull 开发板通过Uboot使用网络启动系统
- 测试环境搭建(APP)
- 反感料理包的真正原因,正在被“恶心”掩盖
- CODESYS开发教程6-关键字及变量类型
- filebeat7.7.0相关详细配置预览- processors
- js中的with()用法