队列绪论
前两篇文章讲完了栈,现在开始总结归纳队列。我们知道,队列的本质也是线性表,只不过是操作受限的线性表,当对于栈来说,队列的操作位置相对更加自由。队列可以在序列的首端和尾端进行操作。
队列的首端只能删除元素,尾端只能插入元素,这也就是其操作特性先进先出(FIFO)
在讨论完队列的逻辑结构之后,就可以讨论物理结构。我们知道物理结构有顺序存储和链式存储,将这个和队列的操作特性结合起来有以下两种队列:
- 顺序队列
- 链队队列
本文只讨论队列,然后就是关于队列的一些基本操作:
队列的数据类型
队列只能在队首删除元素,在队尾插入元素。因此表示一个队列的时候,需要知道这个队列的 队首 和 队尾 。
因此我们要创建一个控制表,这个控制表里面有队列的队首,队尾还有一段元素空间存放元素,当然顺序队列和链队列的基本思想都是差不多的,但是实现起来是不一样的。
顺序队列需要有三个单元,他们的作用如下:
- 存放一段连续数组空间的指针
- 存放队首元素的下标
- 存放队尾元素的下标
链队列和链栈一样,首先需要有结点类型,结点类型由数据域和指针域组成,而且需要一个控制表可以控制链表的头部和尾部。如图所示,该链表的头结点在顶端:
//顺序队列
#define MAXSIZE 7 //可以根据自己的需求来定义大小
typedef int DataType;
typedef struct Queue{
DataType data[MAXSIZE];
int front;
int rear