//队列用数组简单实现
package 队列数组;
/*队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,
而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。
进行插入操作的端称为队尾,进行删除操作的端称为队头。*/
//接口
interface Queue {
public boolean isEmpty();//队列是否为空
public boolean isFull();//队列是否已满
public void insert(int element);//向队列中插入值
public int peek(); //查看队头元素但不移除
public int size();//返回
public int Rear(); //获得队尾元素
public int remove();//在队列中移除一个元素
}
public class QueueArrays implements Queue {
int arr[];//队列数组
int front;//队头
int rear;//队尾
int size;
QueueArrays(int size) {
this.arr = new int[size];
this.size = size;
front = 0;
rear = -1;
}
public static void main(String[] args) {
QueueArrays queue = new QueueArrays(3);
queue.insert(1);//插入元素
queue.insert(2);
queue.insert(3);
queue.remove();//移除队头
queue.remove();
System.out.println("队头:" + queue.peek());//查看队头元素
System.out.println("队列长度:" + queue.size());//查看队列大小
}
@Override
public boolean isEmpty() {
return front == arr.length;
}
@Override
public boolean isFull() {
return arr.length - 1 == rear;
}
@Override
public void insert(int element) {
if (isFull()) {
throw new RuntimeException("队列已满,无法插入");
}
arr[++rear] = element;
}
@Override
public int peek() {
return arr[front];
}
@Override
public int Rear() {
return arr[rear];
}
@Override
public int remove() {
if (isEmpty()) {
throw new RuntimeException("此队列为空!");
}
size--;
return arr[front++];
}
@Override
public int size() {
return size;
}
}
|