- 任务描述
-
相关知识
- 顺序存储的队列
- 顺序队列的主要操作
- 编程要求
- 测试说明
任务描述
本关任务:实现 step1/SeqQueue.cpp 中的SQ_IsEmpty
、SQ_IsFull
、SQ_Length
、SQ_In
和SQ_Out
五个操作函数,以实现判断队列是否为空、是否为满、求队列长度、队列元素入队和出队等功能。
相关知识
队列是一个插入操作和删除操作受到限制的线性表数据结构。队列的插入和删除被限制在表的两端,即插入操作只能在表的一端进行,而删除操作只能在表的另一端进行,因此队列又称先进先出表。
顺序存储的队列
队列既可以采用顺序存储,也可以采用链接存储来实现。下面给出了一种基于顺序存储的队列实现方案:
该队列存储了 4 个元素 {56,77,15,12} ,其中 56 为队列头, 12 为队列尾。
这种实现方案将队列元素存储在一片连续的空间中,并通过data
、front
、rear
和max
四个属性元素组织成为一个结构:
-
data
: 给出队列存储空间的起始地址; -
front
: 为队头指针,它指向队头元素; -
rear
: 为队尾指针,它指向下一个入队元素的存储位置; -
max
: 指明队列存储空间中最多可存储的数据元素个数。(通常为了区分队列空和满,会在队列尾留一个空数据单元,此时队列最多可放max-1
个数据元素)
特别说明:空间的开始地址为
data
,连续空间里的位置编号从data
所指的开始位置起,到该空间的结束位置,编号依次是0,1,2,…,max-1
。在图1的示例中max=6
。下一个出队元素(这里是队列的头结点)所存储的位置编号用front
给出,下一个入队元素应存储的位置编号用rear
给出。文章来源:https://www.toymoban.com/news/detail-737755.html
基于这些属性要素组织成的队列结构如下所示:文章来源地址https://www.toymoban.com/news/detail-737755.html
struct SeqQueue {
T* data; // 指向数据元素数组的指针
int front; // 下一个出队元素的数组下标
int rear; // 下一个入队元素应该存放的单元的数组下标
int max; // 队列中最多可放max-
到了这里,关于头歌(C语言)-数据结构与算法-队列-第1关:实现一个顺序存储的队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!