1.定义
队列是一种只在一端插入(队尾),另一端删除(队首)的有序线性表,队列中第一个插入的元素也是第一个被删除的元素,所以,队列是一种先进先出(FIFO)线性表。
2.操作
1)主要操作
- void addQueue(T data):入队,在队尾插入一个元素
- T removeQueue():出队,删除并返回队首元素。
2)辅助操作
- boolean isEmpty():指明队列是否为空
- int size():返回队列中的元素个数
- T peek():返回队首元素但不删除
- T poll():返回队尾元素但不删除
3.实现方式
1)基于简单循环数组的实现
package dataStructure;
public class ArrayQueue {
private int[] a;
private int front;
private int rear;
private int size;//数组大小
private int items ;
public ArrayQueue(int MaxSize) {
size = MaxSize;
a = new int[size];
front = 0;
rear = -1;
items = 0;
}
boolean isEmpty() {
return rear == -1;
}
boolean isFull() {
return items == size;
}
int size() {
return items;
}
void addQueue(int value) {
if(isFull()) {
System.out.println("队满!");
return;
}
rear = ++rear % size;
items++;
a[rear] = value;
}
int delQueue() {
if(isEmpty()) {
System.out.println("队空!");
return 0;
}
items--;
// front = ++front % size;
// return a[front];
return a[front++ % size];
}
int peek() {
if(isEmpty()) {
System.out.println("队空!");
return 0;
}
return a[front];
}
int poll() {
if(isEmpty()) {
System.out.println("队空!");
return 0;
}
return a[rear];
}
void dispaly() {
if(isEmpty()) {
System.out<