Java通过链表实现队列
2016-08-22 09:22
423 查看
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; } } }
相关文章推荐
- java通过链表实现队列,先进先出
- java用链表实现堆栈和队列
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- 数据结构之链表、栈和队列 java代码实现
- Java通过缓存队列执行任务代码实现
- 【第五节】Java代码实现队列----【链表的存储形式】
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- Java双端链表实现队列
- 数据结构之链表、栈和队列 java代码实现
- 基于链表实现Java 自定义Queue队列
- 链表队列的java实现
- java实现队列(链表方式)
- Java中链表、堆栈、队列、二叉树、散列表等数据结构的实现
- java通过LinkedList实现堆栈和队列数据结构
- 利用链表实现队列的Java代码
- 线性表、链表、栈、队列之java实现
- Java 实现双向链表,基于双向链表实现双端队列
- (4) 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列
- 数据结构——使用双端链表实现队列(java实现)
- 一元多项式的乘法与加法运算【Java实现--通过单项链表实现队列】