隊列的特點:
先進先出(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