数据结构之队列
来源:互联网 发布:西瓜影音mac版 官方 编辑:程序博客网 时间:2024/06/05 18:32
队列概述
队列是只允许在表的一端进行插入,而在表的另一端进行删除操作的一种特殊线性表。允许插入的一端称为“队尾”,允许删除的一端称为“队首”。
队列特点
先进先出(FIFO)
队列结构
队列的主要操作
代码如下:
package myQueue;public interface IQueue<E> {public void clear();//清空public boolean isEmpty();// 判空public int length();// 求长度public E peek(); //取对首public void offer(E x)throws Exception;//入队public E poll();//出队}队列的链式表示
队列的链式存储结构称为链队列,其链式存储结构在此用不带头结点的单链表来实现。因为存在front和rear这两个头尾指针,无需对链式中间的结点进行操作。
链队列结构:
首先需要一个结点类来描述链队中的每一个结点:
public class Node<E> {private E data;private Node next;public Node(){this(null,null);}public Node(E x, Node next) {// TODO Auto-generated constructor stubdata = x;this.next = next;}public Node(E x){this.data = x;}public E getData() {return data;}public void setData(E data) {this.data = data;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}}
下面是链表的具体实现:
public class LinkQueue<E> implements IQueue<E> {private Node<E> front,rear;private int curlen;public LinkQueue(){front = null;rear = null;curlen =0;}@Override//队列置空public void clear() {front = rear = null;curlen = 0;}//判断是否是空队列public boolean isEmpty() {return front == null;}
@Override
//求队列中的长度public int length() {/* 没有curlen的话 Node<E> p = front; int length = 0; while(p!=null){ p = p.getNext(); length++; } return length; */return curlen;}@Override//队首元素的函数public E peek() {if(isEmpty()){return null;}return front.getData();}@Override//入队操作public void offer(E x) throws Exception {Node<E> p = new Node<E>(x);if (p == null)// 内存空间不够,满队异常 throw new Exception("链队列已满"); if (!isEmpty( )) { // 队列非空 rear.setNext(p); rear = p; } else {//空队时入队操作,需调整front及rear front = rear = p; } curlen++;}@Override//出队操作public E poll() {if (isEmpty())//空队异常 return null;if (length()==1) //如果出队时队只有一个结点,需调整rear rear=null;E dataOut = front.getData(); front=front.getNext();curlen--;return dataOut;}// 输出函数(从队首到队尾)public void display ( ) { Node<E> p=front;while( p!=null ) {System.out.print(p.getData( ));p=p.getNext();}}}
循环顺序队列
1 0
- 数据结构之队列(链式队列)
- 数据结构之队列(数组队列)
- 数据结构之队列-顺序队列
- 数据结构之循环队列
- 数据结构之顺序队列
- 数据结构之链队列
- java数据结构之队列
- 数据结构之队列
- 数据结构复习之【队列】
- 内核数据结构之队列
- 数据结构之队列实例
- 数据结构学习之队列
- 复习数据结构之队列
- C 队列之数据结构
- 基础数据结构之队列
- 数据结构之队列
- 大话数据结构之队列
- 数据结构之循环队列
- 蓝桥杯比赛总结
- Activity标题栏添加返回按钮
- gulp的安装&less插件
- 编写java程序151条建议读书笔记(8)
- 组合游戏(Circles Game,HDU 5299)
- 数据结构之队列
- 在tomcat上发布servlet访问mysql数据库完成登录功能的案例经验总结
- Maven pom.xml配置详解
- iOS蓝牙开发
- python基础操作
- 磁盘I/O中几种访问文件的方式
- Linux基本操作命令(二)
- 蓝桥杯第1,5,7题
- 同步串行通信与异步串行通信