实现队列比实现栈的会多一点复杂,需要两个标记,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("出队完毕!");}}

复习----使用链表实现队列(先进先出)及迭代相关推荐

  1. 复习----使用链表实现栈(后进先出)及迭代

    使用链表进行模拟栈比用数组好用,考虑的要素也少还方便. 链表结构 private class Node{//链表结构Item item;Node next;} 迭代器 private class It ...

  2. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  3. 数据结构链表之队列,Python3实现——7

    数据结构链表之队列 队列概述 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取 队列可以使用顺序表(Python中 ...

  4. 链表,队列,堆栈的区别

    链表,队列,堆栈的区别 1.栈是个有底的口袋,像袜子. 队列是没底的口袋,像通心粉. 所以:栈的特点是先进后出,队列的特点是先进先出. 2.主要区别是适用的地方不一样,      链表实际上可以认为是 ...

  5. java先进先出 循环队列_java队列--先进先出(循环队列、链队列)

    队列:只允许在一端进行插入操作(队尾),在另一端进行删除操作(队头). 队列的特征就是: 先进先出. 队列的思想及实现也同样非常简单.在生活中的各种常常都需要排队进行,键盘中缓存区.操作系统中的作业调 ...

  6. 队列的实现(2):用链表实现队列

    上一篇文章: http://blog.csdn.net/keheinash/article/details/51125063 利用数组实现了循环队列,这是静态的队列,缺点是需要预设大小,当队列满时,无 ...

  7. 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」必问之 链表 + 栈 + 队列 部分!

    链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力.链表的操作也离不开指针,指针又很容易导致出错. 综合多方面的原因,链 ...

  8. C day18 高级数据表示(链表,队列)

    这是C primer的最后一章了,前面已经学习了怎么创建变量,结构,数组,指针,会写函数,总之,把C作为工具层面的知识已经学完了,但是对于编程之路,这才算走完第一步,因为对于写程序最重要的是学习如何表 ...

  9. 链表,队列和栈的区别

    链表,队列和栈都是数据结构的一种.Sartaj Sahni 在他的<数据结构.算法与应用>一书中称:"数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系 ...

最新文章

  1. WINCE对USB HOST供电的控制
  2. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...
  3. Java-Web JSTL标签库、自定义标签库和MVC设计模式
  4. 十月 android版本分布,安兔兔发布2018年10月份Android手机性能排行榜
  5. 电脑无故弹出yyy102.html网页的解决办法(没办法,今天中招了)
  6. BugkuCTF-WEB题web16备份是个
  7. I9 9900K线程_收藏党抓紧了!英特尔停产i9-9900K特色包装,只因运输太浪费
  8. IDL实现高分一号数据辐射定标TASK(二)
  9. linux根据文件名统计文件数,如何统计 Linux 中文件和文件夹/目录的数量
  10. [4G5G专题-77]:流程 - 4G LTE 接入网的随机接入流程
  11. 刘德华郑秀文喜剧大片《魔幻厨房》DVD国语中字
  12. 空间句法软件Axwoman6.3 安装及ArcGIS 工具加载
  13. stm32控制半导体制冷器实现饮水机保温制冷功能
  14. python 串口示波器
  15. Imx6ull 开发板通过Uboot使用网络启动系统
  16. 测试环境搭建(APP)
  17. 反感料理包的真正原因,正在被“恶心”掩盖
  18. CODESYS开发教程6-关键字及变量类型
  19. filebeat7.7.0相关详细配置预览- processors
  20. js中的with()用法

热门文章

  1. 【rman】list archivelog all与list backup of archivelog all
  2. javascript Array学习与使用
  3. Oracle Linux 6.5 RPM安装Mysql 5.7.11
  4. A successful Git branching model
  5. PHP 判断是否包含某字符串
  6. 关于Shell的一些常用命令
  7. 閱讀10大優點:為什麼你應該每天閱讀
  8. 电力自动化及继电保护实验室规章制度
  9. DotNet程序员是不是最不幸福?
  10. think python下载 中文版开源!这或许是最经典的编程教材