队列的图解和实现(C/C++/Java)

本章会先对队列的原理进行介绍,然后分别通过C/C++/Java三种语言来演示队列的实现。

队列的介绍

队列(Queue),是一种线性存储结构。它有以下几个特点:

  • 队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。
  • 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。

队列通常包括的两种操作:入队列 和 出队列。

1. 队列的示意图

img

队列中有10,20,30共3个数据。

2. 出队列

示意图如下:

img

出队列前:队首是10,队尾是30。

出队列后:出队列(队首)之后。队首是20,队尾是30。

3. 入队列

示意图如下:

img

入队列前:队首是20,队尾是30。 入队列后:40入队列(队尾)之后。队首是20,队尾是40。

接下来,分别介绍队列的C/C++/Java三种实现。

队列的C实现

这里给出4种C语言实现的队列。

  1. C语言实现一:数组实现的队列,并且只能存储int数据。
  2. C语言实现二:单向链表实现的队列,并且只能存储int数据。
  3. C语言实现三:双向链表实现的队列,并且只能存储int数据。
  4. C语言实现四:双向链表实现的队列,能存储任意类型的数据。

队列的C++实现

本部分介绍2种C++实现的队列。

  1. C++实现一:数组实现的队列,能存储任意类型的数据。
  2. C++实现二:C++的 STL 中自带的"队列"(list)的示例。

PS. C++的STL中本身就包含了list类,基本上该list类就能满足我们的需求,所以很少需要我们自己来实现。

队列的Java实现

本部分介绍给出2种Java实现的队列。

  1. C++实现一:数组实现的队列,能存储任意类型的数据。
  2. C++实现二:Java的 Collection集合 中自带的"队列"(LinkedList)的示例。

PS. 和C++一样,JDK包Queue中的也提供了"队列"的实现。JDK中的Queue接口就是"队列",它的实现类也都是队列,用的最多的是LinkedList。

by skywang
Previous     Next