队列的入队、出队和输出操作
来源:程序员小灰数组长度空间固定;循环队列;数组中:(下标+1)除以数组长度得到的是下一个元素的下标,形成循环的现象。如:rear =(rear+1)%array.length;//队尾下标后移front =(front+1)%array.length;//队头下标后移i=(i+1)%array.length;//i的下标后移package chapter2.part...
·
来源:程序员小灰
数组长度空间固定;
循环队列;
数组中:(下标+1)除以数组长度得到的是下一个元素的下标,形成循环的现象。如:
rear =(rear+1)%array.length;//队尾下标后移
front =(front+1)%array.length;//队头下标后移
i=(i+1)%array.length;//i的下标后移
package chapter2.part3;
/**
* Created by weimengshu on 2018/8/24.
*/
public class MyQueue {
private int[] array;
private int front;
private int rear;
public MyQueue(int capacity){
this.array = new int[capacity];
}
/**
* 入队
* @param element 入队的元素
*/
public void enQueue(int element) throws Exception {
if((rear+1)%array.length == front){
throw new Exception("队列已满!");
}
array[rear] = element;
rear =(rear+1)%array.length;//余数即下标
}
/**
* 出队
*/
public int deQueue() throws Exception {
if(rear == front){
throw new Exception("队列已空!");
}
int deQueueElement = array[front];
front =(front+1)%array.length;//余数即下标
return deQueueElement;
}
/**
* 输出队列
*/
public void output(){
for(int i=front; i!=rear; i=(i+1)%array.length){//余数即下标
System.out.println(array[i]);
}
}
public static void main(String[] args) throws Exception {
MyQueue myQueue = new MyQueue(6);
myQueue.enQueue(3);
myQueue.enQueue(5);
myQueue.enQueue(6);
myQueue.enQueue(8);
myQueue.enQueue(1);
myQueue.deQueue();
myQueue.deQueue();
myQueue.deQueue();
myQueue.enQueue(2);
myQueue.enQueue(4);
myQueue.enQueue(9);
myQueue.output();
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)