class LinkedQueue<T> {/*** 队列大小,由构造函数初始化*/private int maxSize;/*** 队头*/private Node front = null;/*** 队尾*/private Node rear = null;/*** 队列实际元素个数*/private int nItems;/*** 初始化队列,并指定队列长度* * @param maxSize*/public LinkedQueue(int maxSize) {this.maxSize = maxSize;front = null;rear = null;this.nItems = 0;}/*** 讲一个数据放入队列* * @param data*/public void enqueue(T data) {Node node = new Node(data);if (isEmpty()) {front = node;front.next = null;rear = node;rear.pre = null;nItems++;return;}if (size() == 1) {rear = node;front.next = rear;rear.pre = front;nItems++;return;}if (isFull()) {System.out.print("超过队列已满,无法入队");return;}node.pre = rear;rear.next = node;rear = node;nItems++;}/*** 将数据出队* * @return*/public T dequeue() {Node temp = null;if (isEmpty()) {System.out.println("队列已空,无法出队");return null;}if (size() == 1) {temp = front;front = null;rear = null;nItems--;return temp.data;}if (size() == 2) {temp = front;front = rear;front.next = null;rear.pre = null;nItems--;return temp.data;}temp = front;front = front.next;nItems--;return temp.data;}/*** 判断队列是否为空* * @return*/public boolean isEmpty() {return nItems == 0;}/*** 判断队列是否已满* * @return*/public boolean isFull() {return nItems == maxSize;}/*** 获取队列的实际数据个数* * @return*/public int size() {return nItems;}/*** 将数据封装成节点* * @author John**/private class Node {T data;Node next;Node pre;public Node(T data) {this.data = data;}}
}

转载于:https://www.cnblogs.com/SaraMoring/p/5794383.html

Java通过链表实现队列相关推荐

  1. 基于链表实现队列(基于Java实现)

    title: 基于链表实现队列(基于Java实现) tags: 链表 队列 基于链表的队列实现方法的原理: 基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针.它 ...

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

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

  3. 数据结构与算法:链表,队列,栈,递归,有序表

    反转单链表,双链表 import java.util.ArrayList; import java.util.List;public class ReverseList {public static ...

  4. 聊聊并发(七)——Java中的阻塞队列

    1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队列可用 ...

  5. 用结点实现链表LinkedList,用数组和结点实现栈Stack,用数组和结点链表实现队列Queue

    一,用结点实现链表LinkedList,不用换JavaAPI的集合框架 import java.util.Scanner;public class Main {public static class ...

  6. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  7. 转:Java 7 种阻塞队列详解

    转自: Java 7 种阻塞队列详解 - 云+社区 - 腾讯云队列(Queue)是一种经常使用的集合.Queue 实际上是实现了一个先进先出(FIFO:First In First Out)的有序表. ...

  8. Java单链表、双端链表、有序链表实现

    Java单链表.双端链表.有序链表实现 原创 2014年03月31日 23:45:35 标签: Java / 单链表 / 双端链表 / 有序链表 65040 单链表: insertFirst:在表头插 ...

  9. 20162316刘诚昊 用链表实现队列

    20162316刘诚昊 2017-2018-2 <Java程序设计>用链表实现队列 实验要求 1 参考程序15.5给出方法deque,first,isEmpty,size,toString ...

最新文章

  1. 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...
  2. python 类型之 set
  3. JAVA的WebService规范JAX-WS
  4. 你已经用上 5G 网络了吗?
  5. 新浪微博api(.net)时间格式问题
  6. codeforces 1073E
  7. IntelliJ IDEA 14 创建maven项目二
  8. linux命名管道进程间通信,《Linux 进程间通信》命名管道:FIFO
  9. 多线程常见问题(面试)
  10. 递归和迭代_斐波那契数列的实现:递归方式和迭代方式
  11. [React-Native]环境配置amp;HelloWorld
  12. 如何用php代码实现人脸识别,PHP实现人脸识别技术
  13. 第一台计算机英语怎么说,世界第一台计算机英文缩写名为
  14. 多包管理工具lerna搭建项目---基本常用命令
  15. Kali无线渗透加油破解无线
  16. 计算机二级ms模拟题在线,全国计算机二级MSoffice高级应用模拟试题及答案
  17. 笛卡尔树简介(分类到treap里面)
  18. Flowable No outgoing sequence flow of the exclusive gateway ‘xxx‘ could be selected for continuing
  19. JDK1.8下载安装配置
  20. QT中QPrinter打印功能

热门文章

  1. js控制Iframe 和 iframe与主页的交互,传值 (转载)
  2. ASP.NET-GridView数据绑定的几种方法
  3. Android:30分钟弄明白Touch事件分发机制
  4. JS OffsetParent属性深入解析
  5. Android技术博文
  6. 网络最大流的三种基础算法
  7. shell实例第0讲:shell脚本完整pdf文档下载
  8. Flash存储控制器组成!(flash)
  9. Nanopi NEO Air串口代码
  10. 数组、结构体和共用体的长度计算?