队列:
队列是一种线性集合,其元素从一端加入,从另一端删除。因此队列是按照先进先出方式处理的,从队列中删除元素的次序与往队列里放置元素的的次序是一样的。 由于队列是一种线性集合,因此可以像处理栈一样,把队列实现成一种LinearNode对象的链表。
队列特点:
先入先出
模拟队列:
int [] arr;//定义数组来模拟队列
int maxSize;//定义数组最大容量
int front;//定义队列头指针
int rear;//定义队列尾指针
判断条件:
判断队列空:rear=front
判断队列满:rear=maxSize-1
添加数据操作:
先判断队列是否满,没有满在做后续处理, rear后移 arr[rear]=value
删除数据操作:
先判断队列是否为空,没有空再做后续处理 front后移 打印arr[front]
代码块:
package queue;
public class Queuedemo {
int [] arr;//定义数组来模拟队列
int maxSize;//定义数组最大容量
int front;//定义队列头指针
int rear;//定义队列尾指针
//构造函数初始化
public Queuedemo(int maxSize) {
this.maxSize = maxSize;
arr=new int[this.maxSize];
front=-1;
rear=-1;
}
//判断队列是否为空
public boolean isEmpty() {
return rear==front;
}
//判断队列是否满
public boolean isFull() {
return rear==maxSize-1;
}
//入队
public void add(int value) {
if(isFull()) {
System.out.println("队列已满,不能添加");
return;
}
rear++;
arr[rear] = value;
}
//出队
public int remove() {
if(isEmpty()) {
throw new RuntimeException("队列为空,不能取数据");
}
front++;
return arr[front];
}
//显示队列
public void list() {
if(isEmpty()) {
System.out.println("队列为空");
return;
}
for(int i=front+1;i<=rear;i++) {
System.out.println("Queue["+i+"]="+arr[i]);
}
}
}
队列产出: