队列

来源:互联网 发布:php抢红包源代码 编辑:程序博客网 时间:2024/06/10 03:52

队列:

队列也是一种线性结构,相比与其他线性结构,队列结构有其独特的运算规则,队列结构的逻辑特点就像是现实生活的排队,后来的站在队尾,先来的从队首离开,也就说队列是一种FIFO(先进先出)的数据结构。队列的存储结构也有两种(1)顺序存储结构,一维数组实现(2)链式存储结构,链表实现


队列的实现的关键:

队列相对于堆栈来说多了一个位置标志,那么对于双位置标志来说,怎样判断队列为空就是关键点。队首为front,队尾为rear,那么front==rear就是队列为空了么,并不是。此时front和rear都指向同一个元素,并不是队列为空。所以要引入队列长度,当队列长度为0,队列为空。


用java实现队列:

成员变量:

public class Queue {int length=50;//顺序结构数组长度int []array;//存储数组int front;//队首int rear;//队尾int queueLength;//队列长度}

构造函数:

rear=-1的原因:保证当从队尾添加第一个元素时,rear=0.

public Queue(){array=new int[length];front=0;//队首为0rear=-1;//队尾为-1queueLength=0;//}

判断是否为空:

public boolean isEmpty(){if(queueLength==0)return true;else return false;}

判断是否已满:

public boolean isFull(){if(rear==(length-1)) return true;else return false;}

还原标志位:

public void clear(){rear=-1;front=0;}

释放队列空间:

public void free(){array=null;}

进队列:

public int inQueue(int data){if (isFull()) {System.out.println("队列已满,不能入队");return 0;}//元素已满,入队失败。else{rear++;array[rear]=data;queueLength++;return 1;}}

出队列:

public int outQueue(){if(isEmpty()) {System.out.println("队列已空,不能出队");return 0;}else{int data=array[front];front++;queueLength--;return data;}}

打印队列中的数据:

public void traversal(){if(isEmpty()){System.out.println("这是一个空队列");}else{for(int i=front;i<=rear;i++){System.out.print(array[i]+" ");}System.out.println();}}







0 0