本章会先对队列的原理进行介绍,然后分别通过C/C++/Java三种语言来演示队列的实现。
队列的介绍
队列(Queue),是一种线性存储结构。它有以下几个特点:
- 队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。
- 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。
队列通常包括的两种操作:入队列 和 出队列。
1. 队列的示意图
队列中有10,20,30共3个数据。
2. 出队列
示意图如下:
出队列前:队首是10,队尾是30。
出队列后:出队列(队首)之后。队首是20,队尾是30。
3. 入队列
示意图如下:
入队列前:队首是20,队尾是30。 入队列后:40入队列(队尾)之后。队首是20,队尾是40。
接下来,分别介绍队列的C/C++/Java三种实现。
队列的C实现
这里给出4种C语言实现的队列。
- C语言实现一:数组实现的队列,并且只能存储int数据。
- C语言实现二:单向链表实现的队列,并且只能存储int数据。
- C语言实现三:双向链表实现的队列,并且只能存储int数据。
- C语言实现四:双向链表实现的队列,能存储任意类型的数据。
队列的C++实现
本部分介绍2种C++实现的队列。
PS. C++的STL中本身就包含了list类,基本上该list类就能满足我们的需求,所以很少需要我们自己来实现。
队列的Java实现
本部分介绍给出2种Java实现的队列。
PS. 和C++一样,JDK包Queue中的也提供了"队列"的实现。JDK中的Queue接口就是"队列",它的实现类也都是队列,用的最多的是LinkedList。