队列的特点:
先进先出(FIFO),只限定在队列的一段允许插入,在队列的另一端进行删除操作的线性表。队列用图表示:
3.下面让我们实现队列
public class Queue {
private int arr[];
/**
* 队列最大值
*/
private int maxSize;
/**
* 有效数据项
*/
private int elems;
/**
* 队头
*/
private int top;
/**
* 队尾
*/
private int end;
public Queue(int size) {
this.maxSize = size;
arr = new int[size];
elems = 0;
top = 0;
end = -1;
}
/**
* 插入数据
*/
public void insert(int value) {
arr[++end] = value;
elems++;
}
/**
* 移除数据
*/
public int remove() {
elems--;
return arr[top++];
}
/**
* 是否为空
*/
public boolean isEmpty() {
return elems == 0;
}
/**
* 判断是否为满
*/
public boolean isFull() {
return end == (maxSize - 1);
}
/**
* 返回有效元素大小
*/
public int size() {
return elems;
}
}
下面是我们的测试代码:
public class TestQueue {
public static void main(String[] args) {
Queue queue = new Queue(5);
System.out.println("队列是否为null:" + queue.isEmpty());
queue.insert(5);
queue.insert(3);
queue.insert(1);
queue.insert(2);
queue.insert(6);
System.out.println("队列是否为null" + queue.isEmpty());
System.out.println("队列大小:" + queue.size());
System.out.println("队列是否满了:" + queue.isFull());
System.out.println("队列遍历:");
while (!queue.isEmpty()) {
System.out.println(queue.remove());
}
}
}
测试结果:
队列是否为null:true
队列是否为nullfalse
队列大小:5
队列是否满了:true
队列遍历:
5
3
1
2
6