java链式队列
2015-12-17 22:01
459 查看
下面来讨论队列的链式存储,即链队列。
队列的链式存储结构简称为链队列。它是限制仅在表头删除和表尾插入的单链表。
链队列的定义:
队列的链式存储结构简称为链队列。它是限制仅在表头删除和表尾插入的单链表。
链队列的数据存储形式:
链队列基本运算的实现:
/** * */ package unit5Queue.linked; /** * 链式队列 * <p>Title: LinkedQueue</p> * <p>Description: </p> * <p>Company: </p> * @author 夏 杰 * @param <T> * @date 2015年12月16日 下午11:12:31 * @vesion 1.0 */ public class LinkedQueue<T> { //队列头指针 public QueueNode<T> font; //队列头指针 public QueueNode<T> rear; //队列数据长度 public int size = 0; /** * 初始化队列 * @param rear */ public LinkedQueue() { QueueNode<T> node = new QueueNode<T>(null,null); node.next = null; font=rear=node; } /** * 入队列 * @param data */ public void push(T data){ //创建一个新的节点 QueueNode<T> node = new QueueNode<T>(data,null); //将新的节点插入队尾(通过rear.next=node 这样连起来) rear.next = node; rear = node; size++; } /** * 出队列 */ public T pop(){ if(rear == font){ try { throw new Exception("队列为空"); } catch (Exception e) { e.printStackTrace(); } return null; }else{ //node是将要出队列的节点 //注意font节点是不存储数据的 QueueNode<T> node = font.next; T data = node.data; font.next = node.next; //将要出队列的节点删除掉 node = null; size--; return data; } } public boolean isEmpty(){ if(font==rear){ return true; } return false; } /** * 队列长队 * @return * @author WWX */ public int size(){ return size; } public String toString(){ if(isEmpty()){ return "[]"; }else{ StringBuilder sb = new StringBuilder("["); for(QueueNode<T> current = font.next;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) { LinkedQueue<Integer> queue = new LinkedQueue<Integer>(); queue.push(1); queue.push(7); queue.push(6); queue.push(34); queue.push(4); queue.push(33); System.out.println(queue); System.out.println("出队:"+queue.pop()); System.out.println("队列长度="+queue.size()); System.out.println(queue); } }
相关文章推荐
- RXJava
- 排序及选择算法的java实现(三)计数排序、计数选择、随机选择、最差线性时间选择
- JDK下载和环境配置
- java 集合框架
- java静态变量、常量和方法
- 国密算法SM4,3DES算法和AES三种加密算法的java实现
- JAVA环境变量配置
- java设计模式(八)--模板方法模式
- Android实战(一)------Myeclipse10搭建android运行环境图文详细步骤--------SDK的安装配置
- Android实战(一)------Myeclipse10搭建android运行环境图文详细步骤--------SDK的安装配置
- java开发俄罗斯方块学习笔记 Day-5 封装
- 一段代码让你秒懂java方法究竟是传值还是传地址
- 更改Eclipse中js文件的编辑方式,从而可以利用ctrl键快速定位方法
- maven项目打包注意事项
- Struts2执行流程
- spring4 hibernate4 freemaker
- java堆内存探究
- JRE和JDK
- java中静态代理,动态代理知识的补充
- java 集合框架