数据结构(四):队列
-
队列(Queue):遵循FIFO(First In First Out 先进先出)原则
-
队列只允许在一端进行插入操作,而在另一端进行删除操作。允许插入的端是队列尾,允许删除的是队列头
二、结构示意图
-
向一个空队列中一次插入a、b、c三个元素
-
将队列中的元素一个个删除
三、代码示例
-
LinkedList就实现了Queue接口,我们这里以LinkedList为例
-
@Test public void test4(){ LinkedList<Integer> queue = new LinkedList<Integer>(); queue.add(1); queue.add(2); queue.add(3); System.out.println(queue.peek()); queue.pop(); System.out.println(queue.peek()); queue.pop(); System.out.println(queue.peek()); queue.pop(); }
-
代码运行效果如下:
-
上述代码我们可以发现,队列是先进先出
四、自己动手实现一个简单的队列
package com.zhurouwangzi.entity; public class MyQueue { public MyQueue(){ element = new int[20]; size = 0; } private int[] element; private int size; public int push(int item){ element[size] = item; size++; return item; } public int pop(){ int popData = element[0]; int[] newEle = new int[size-1]; System.arraycopy(element, 1, newEle, 0, size-1); element = newEle; size--; return popData; } public int peek(){ return element[0]; } public int getSize(){ return size; } }
-
测试自己写的简单队列
@Test public void test4(){ MyQueue myQueue = new MyQueue(); myQueue.push(1); myQueue.push(2); myQueue.push(3); System.out.println(myQueue.peek()); myQueue.pop(); System.out.println(myQueue.peek()); myQueue.pop(); System.out.println(myQueue.peek()); myQueue.pop(); }
-
运行效果如下:
-