c语言变量循环队列的遍历操作,[数据结构 - 第4章] 队列之顺序队列(C语言实现)...

一、什么是顺序队列?

队列的顺序储存结构:用数组存储队列,为了避免当只有一个元素时,队头和队尾重合使得处理变得麻烦,所以引入两个指针:front 指针指向队头元素,rear 指针指向队尾元素的下一个位置,当 front=rear 时,为空队列,结构如下图所示:

133361a7c0f064ed1d519919e33ddd30.png

顺序队列的结构代码如下:

typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */

/* 循环队列的顺序存储结构 */

typedef struct

{

ElemType data[MAXSIZE];

int front; /* 头指针 */

int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */

}SeqQueue;

假设是长度为 5 的数组,初始状态,空队列如下图左所示,front 与 rear 指针均指向下标为 0 的位置。然后入队 a1、a2、a3、a4,front 指针依然指向下标为 0 位置,而 rear 指针指向下标为 4 的位置,如下图右所示:

be73233623656fb9eae683695a8c51be.png

出队 a1、a2,则 front 指针指向下标为 2 的位置,rear 不变,如下图左所示,再入队 a5,此时 front 指针不变,rear 指针移动到数组之外。数组之外, 那将是哪里?如下图右所示:

ea130736d5022dc14e587292e3ea887b.png

问题还不止于此。假设这个队列的总个数不超过5个,但目前如果接着入队的话,因数组末尾元素已经占用,再向后加,就会产生数组越界的错误,可实际上,我们的队列在下标为0和1的地方还是空闲的。我们把这种现象叫做 “假溢出"。

二、什么是顺序循环队列?

所以解决 "假溢出" 的办法就是后面满了,

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值