队列(三) --- 队列的链式存储
2018-03-28 20:26
302 查看
类似使用链式存储结构保存线性表, 这里也可以使用链式结构存储队列中的各元素,我们可以称置为链队列。
主要就是插入队列和移除队列,可参看一下(制作粗糙,请见谅):(依次是原队列、插入元素、删除数据后的形式)
参考代码:
LinkQueue<Integer> lq = new LinkQueue<Integer>();
lq.insert(1);
lq.insert(2);
lq.insert(3);
System.out.println(lq);
lq.remove();
lq.insert(4);
System.out.println("删除一个元素和再添加一个元素的队列:" + lq);
}
截图:
参考:《疯狂java 突破程序员基本功的16课》
以上是这篇的全部内容,如果有错误或需要改进的地方,请指教。谢谢!
主要就是插入队列和移除队列,可参看一下(制作粗糙,请见谅):(依次是原队列、插入元素、删除数据后的形式)
参考代码:
public class LinkQueue<T> { private class Node{ //保存节点的数据 private T data; //指向下一个节点的引用 private Node next; public Node(){ } public Node(T data, Node next){ this.data = data; this.next = next; } } //记录队列中已包含的节点数 private int size; //保存节点的头节点和尾节点 private Node front; private Node rear; //根据默认的长度构建一个顺序队列 public LinkQueue(){ //空队列 front = null; rear = null; } //以一个初始元素建立顺序队列 public LinkQueue(T data){ front = new Node(data, null); // 只有一个节点,都指向它 rear = front; size ++; } //新元素插入队列 : 让原来的rear节点的next指向新的节点, 再让rear引用指向新节点 public void insert(T data){ //如果链表还是空链表的话 if(front == null){ front = new Node(data, null); rear = front; } else{ Node newNode = new Node(data, null); //尾节点指向新增的节点 rear.next = newNode; rear = newNode; } size ++; } //移除或者删除队列 : front引用指向front后面的那个节点即可。 public T remove(){ Node oldNode = front; front = front.next; oldNode.next = null; size --; return oldNode.data; } //删除队列的最后一个元素 public T element(){ return rear.data; } //判断是否为空队列 private boolean empty() { return size == 0; } //循环获取队列大小 public int length(){ return size; } //清空队列 public void clear(){ front = null; rear = null; size = 0; } public String toString(){ if(empty()){ return "[]"; } else{ StringBuffer sb = new StringBuffer("["); for(Node current = front; current != null; current = current.next){ sb.append(current.data.toString() + ", "); } int len = sb.length(); return sb.delete(len - 2, len).append("]").toString(); } } }测试代码:public static void main(String[] args) {
LinkQueue<Integer> lq = new LinkQueue<Integer>();
lq.insert(1);
lq.insert(2);
lq.insert(3);
System.out.println(lq);
lq.remove();
lq.insert(4);
System.out.println("删除一个元素和再添加一个元素的队列:" + lq);
}
截图:
参考:《疯狂java 突破程序员基本功的16课》
以上是这篇的全部内容,如果有错误或需要改进的地方,请指教。谢谢!
相关文章推荐
- 3-7-队列的链式存储-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
- 队列的顺序存储实现和链式存储实现
- 队列的链式存储结构
- 队列的链式存储
- 队列的链式存储方式的实现(Java语言描述)
- 队列的链式存储实现
- 队列的链式存储
- 队列(链式存储)JAVA代码
- 栈和队列的顺序存储和链式存储
- 队列的链式存储结构以及实现
- 队列的顺序和链式存储
- java---队列---链式存储
- 数据结构--队列--链式存储
- 005 队列的链式存储
- 队列(链式存储) java实现
- [数据结构]程杰队列的链式存储结构及实现代码
- 队列链式存储 - 设计与实现 - API函数
- 队列的链式存储的两种定义方式
- 数据结构学习笔记-队列的链式存储(C语言实现)
- 队列的链式存储