1、队列的定义
是一种特殊的线性表
队列仅在线性表的两端进行操作:
队头:取出数据元素的一端
队尾:插入数据元素的一端
2、队列的抽象数据类型
同样是线性表,队列也有类似线性表的各种操作,不同的就是插入数据只能在队尾进行,删除数据只能在队头进行。
ADT 队列(Queue) Data 同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系。 Operation InitQueue(*Q): 初始化操作,建立一个空队列Q。 DestroyQueue(*Q): 若队列Q存在,则销毁它。 ClearQueue(*Q): 将队列Q清空。 QueueEmpty(Q): 若队列Q为空,返回true,否则返回false。 GetHead(Q, *e): 若队列Q存在且非空,用e返回队列Q的队头元素。 EnQueue(*Q, e): 若队列Q存在,插入新元素e到队列Q中并成为队尾元素。 DeQueue(*Q, *e): 删除队列Q中队头元素,并用e返回其值。 QueueLength(Q): 返回队列Q的元素个数 endADT
3、循环队列的顺序存储结构代码如下:
/* QElemType类型根据实际情况而定,这里假设为int */ typedef int QElemType; /* 循环队列的顺序存储结构 */ typedef struct