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
{
QElemType data[MAXSIZE];
/* 头指针 */
int front;
/* 尾指针,若队列不空,
指向队列尾元素的下一个位置 */
int rea

本文介绍了队列的基本概念,它是一种特殊的线性表,只允许在表的前端(队头)进行删除操作,在表的后端(队尾)进行插入操作。接着详细讲解了循环队列的顺序存储结构、初始化、求队列长度以及入队和出队的操作。此外,还提到了链队列的结构和入队操作。
最低0.47元/天 解锁文章
170万+

被折叠的 条评论
为什么被折叠?



