基本思想
队列是一种特殊的线性表,特殊之处在于只允许在表的前端进行删除操作,而在表的后端进行插入操作。和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
按照先进先出FIFO(first in first out),后进后出的思想进行运作。
基本操作
- 入对(put):只能在尾部进行入对操作。
- 出对(poll):只能在头部进行出对操作。
java语言实现
核心类:
public class MyQueue {
int[] queue;
public MyQueue() {
queue = new int[0];
}
//入队操作
public void put(int element){
int[] newQueue = new int[queue.length + 1];
System.arraycopy(queue,0,newQueue,0,queue.length);
newQueue[queue.length] = element;
queue = newQueue;
System.out.println(element+"入队");
}
//出队操作
public int poll(){
if (queue.length == 0){
throw new RuntimeException("当前队列为空,不能进行出队操作了");
}
int element;
int[] newQueue = new int[queue.length - 1];
element = queue[0];
System.arraycopy(queue,1,newQueue,0,queue.length - 1);
queue = newQueue;
return element;
}
}
测试类:
public class QueueTest {
public static void main(String[] args) {
MyQueue queue = new MyQueue();
queue.put(1);
queue.put(2);
queue.put(3);
System.out.println(queue.poll()+"出队");
queue.put(4);
System.out.println(queue.poll()+"出队");
System.out.println(queue.poll()+"出队");
System.out.println(queue.poll()+"出队");
}
}
测试结果:
1入队
2入队
3入队
1出队
4入队
2出队
3出队
4出队