简介

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列

队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表

LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用

队列的操作

使用了LinkedList类的方法进行封装,更多LinkedList类的方法去查看JDK

enqueue

加入队列(在表的后端进行插入操作)

dequeue

离开队列(在表的前端进行删除操作)

代码实现

Java代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.util.LinkedList;

/**
* @author LeDao
* @company
* @create 2021-06-21 12:38
*/
public class Test {

public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<>();
//加入队列
enqueue(1, linkedList);
enqueue(3, linkedList);
enqueue(4, linkedList);
enqueue(6, linkedList);
//遍历
System.out.print("当前所有元素: ");
for (Integer integer : linkedList) {
System.out.print(integer + " ");
}
System.out.println();
//离开队列
dequeue(linkedList);
System.out.print("当前所有元素: ");
for (Integer integer : linkedList) {
System.out.print(integer + " ");
}
}

/**
* 离开队列(删除)
*
* @param linkedList
*/
public static void dequeue(LinkedList<Integer> linkedList) {
if (linkedList.size() > 0) {
linkedList.removeFirst();
} else {
System.out.println("队列为空");
}
}

/**
* 加入队列(插入)
*
* @param a
* @param linkedList
*/
public static void enqueue(int a, LinkedList<Integer> linkedList) {
linkedList.addLast(a);
}
}

结果

img