[Java算法分析与设计]链式队列的实现
来源:互联网 发布:程序设计导论 python 编辑:程序博客网 时间:2024/06/02 06:47
首先定义Queue接口
package com.chen.arithmetic_test.queue_test;/** * Created by ChenMP on 2017/7/5. */public interface Queue { //入队 public void append(Object obj) throws Exception; //出队 public Object delete() throws Exception; //获取头元素 public Object getFront() throws Exception; //队列是否为空 public boolean isEmpty();}
定义Node节点
package com.chen.arithmetic_test.queue_test;/** * Created by ChenMP on 2017/7/5. */public class Node { private Object nodeData; private Node nextNode; public Node() { super(); } public Node(Object nodeData) { this.nodeData = nodeData; } public Object getNodeData() { return nodeData; } public void setNodeData(Object nodeData) { this.nodeData = nodeData; } public Node getNextNode() { return nextNode; } public void setNextNode(Node nextNode) { this.nextNode = nextNode; }}
定义Queue的实现类
package com.chen.arithmetic_test.queue_test;/** * Created by ChenMP on 2017/7/5. */public class LinkQueue implements Queue { private Node frontNode; //队首节点 private Node rearNode; //队尾节点 private int size; //队列大小 private int maxSize; //队列最长大小 public LinkQueue() { this.frontNode = null; this.rearNode = null; this.size = 0; this.size = 10; //设置默认大小 } public LinkQueue(int maxSize) { this.frontNode = null; this.rearNode = null; this.size = 0; this.maxSize = maxSize; } @Override public void append(Object obj) throws Exception { if (size == maxSize) throw new Exception("队列已满!!!"); Node concurrentNode = new Node(obj); if (0 == size) {// 队列为空时,对首和队尾指向同一个Node对象 this.rearNode = concurrentNode; this.frontNode = concurrentNode; this.size++; } else { this.rearNode.setNextNode(concurrentNode); this.rearNode = concurrentNode; this.size++; } } @Override public Object delete() throws Exception { if (0 == size) throw new Exception("队列为空!!!"); Object obj = this.frontNode.getNodeData(); this.frontNode = frontNode.getNextNode(); this.size--; return obj; } @Override public Object getFront() throws Exception { if (0 == size) throw new Exception("队列为空!!!"); return this.frontNode.getNodeData(); } @Override public boolean isEmpty() { return this.size>0?false:true; }}
编写测试类
package com.chen.arithmetic_test.queue_test;/** * Created by ChenMP on 2017/7/5. */public class Test { public static void main(String[] args) throws Exception { LinkQueue queue = new LinkQueue(12); for (int i=0; i<12; i++) { queue.append(i); } for (int i=0; i<3; i++) { System.out.print(queue.delete() + " ,"); } System.out.println(); queue.append(12); queue.append(13); queue.append(14); while (!queue.isEmpty()) { System.out.print(queue.delete() + " ,"); } }}
阅读全文
0 0
- [Java算法分析与设计]链式队列的实现
- 数据结构与算法设计---链式队列的实现(C++)
- [Java算法分析与设计]顺序循环队列的实现
- C 算法精介----队列->链式队列->分析与实现
- [Java算法分析与设计]链式堆栈
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(14) --链式队列的设计与实现
- 循环队列与链式队列的实现
- 数据结构和算法--队列的链式实现
- 数据结构与算法设计---链式栈的实现(C++)
- Java实现链式队列
- 队列的链式表示与实现
- 队列的链式表示与实现
- 队列的连续与链式实现
- 链式队列的基本操作与实现
- 数据结构与算法(Java描述)-10、链式队列以及优先级队列的应用
- 数据结构与算法分析-队列的实现
- Swift3.0 直接插入排序
- 深入解析String#intern
- iOS开发 二维码扫描和生成
- LeetCode (Binary Tree Preorder Traversal)
- 【Algothrim】求从n个数中取r个数的组合
- [Java算法分析与设计]链式队列的实现
- windows 2008 server 安装VS2010 后无法无法访问数据库,提示“ORA-06413: 连接未打开”
- logback配置
- Android模拟按键
- 【Zookeeper 1】Zookeeper的功能以及工作原理
- JAVA面试 中级
- weblogic管理工具及监控 health state 的方法
- 【集训】jzoj 2017.7.5 noip模拟赛A 总结 (欧拉回路)
- [第三季]11.在TreeSet中添加自定义对象