[数据结构][适用循环队列和非循环队列]顺序队列的实现。

本文探讨了如何实现适用于循环队列和非循环队列的顺序队列。通过定义队列结构体,初始化队列,以及插入、删除元素的函数,展示了在队列满和空状态的判断条件上,如何通过(rear+1)%MAXSIZE=front来适应两种队列。在代码示例中,展示了如何创建、添加元素、打印队列和计算队列长度的过程。
摘要由CSDN通过智能技术生成

队列是队尾添加元素,队头删除元素,先进先出的线性结构,当队列为顺序队列即非循环队列的时候,当队头位置和队尾位置相同都为0的时候,队列为空队列,当队列为循环队列的时候,队列满和空时队头元素位置和队尾元素位置都是相等的。那为什么这个下面的代码可以适用于非循环队列和循环队列呢,原因就在于判断队列为空和满的条件,即当当(rear+1) % MAXSIZE = front时为满这个条件,下面分析一下这个条件就明白是为什么了。首先,在循环队列中有两个方法判断空还是满,一个是使用标记,一个是将队尾的下一个元素位置设置为满的状态,即少用一个位置存储元素,即rear+1的原因,当rear = front的时候队列为空,当(rear+1)%MAXSIZE =front的时候为满,这里的取余操作的意思就是如果rear+1小于MAXSIZE的时候取余就是当前rear+1的值,如果rear+1等于MAXSIZE的值得时候就是0,而此时可能front为0,即代表了队列为满。那么对于非循环队列,道理也是一样的。


#define INITSIZE 100
#define INCREMENT 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR -1
#define OVERFLOW -1


typedef int Status;
typedef int ElemType;


typedef struct {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值