循环队列的存储空间为(0:59),初始状态为空,经过一系列正常的入队与退队操作后,front=25
循环队列的存储空间为(0:59),初始状态为空,经过一系列正常的入队与退队操作后,front=25,rear=24,循环队列中的元素个数为A59B60C2D1这个59是怎...
循环队列的存储空间为(0:59),初始状态为空,经过一系列正常的入队与退队操作后,front=25,rear=24,循环队列中的元素个数为
A59
B60
C2
D1
这个59是怎么算出来的啊 展开
A59
B60
C2
D1
这个59是怎么算出来的啊 展开
1个回答
展开全部
设有一个用数组Q[1..m]表示的环形队列,约定f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为 (m+r-f)mod m
(60+24-25)mod 60 =59
分析:
对于顺序队列,头指针和尾指针开始时刻都指向数组的0下标元素。当加入新元素以后,尾指针向后移动,指向最后一个元素的下一个位置。
但是尾指针不能超过数组的最大范围。当有元素删除时,头指针向后移动。但是头指针不能低于数组的0下标。这样就会引入一种“假溢出”现象,
数组中存在空余的空间,但是由于尾指针已经在最大位置,不能加入元素。
循环队列就可以用来解决 假溢出 问题, 当队列后面的满了,就从头在开始,形成头尾相接的循环.
出现的问题: front=rear即头指针和尾指针相等,但是对应两种情况:一种是队列是空,一种是队列是满。
所以,我们定义循环队列中空出一个位置为满队列状态。front指向头元素,rear指向尾元素的下一个位置。
那么循环队列的长度如何计算呢?
情况一: 当rear大于front时,循环队列的长度:rear-front
情况二: 当rear小于front时,循环队列的长度:分为两部分计算 0+rear 和 Quesize-front , 将两部分的长度合并到一起即为: rear-front+Quesize
所以将两种情况合为一种,即为: 总长度是(rear-front+Quesize)%Quesize
(60+24-25)mod 60 =59
分析:
对于顺序队列,头指针和尾指针开始时刻都指向数组的0下标元素。当加入新元素以后,尾指针向后移动,指向最后一个元素的下一个位置。
但是尾指针不能超过数组的最大范围。当有元素删除时,头指针向后移动。但是头指针不能低于数组的0下标。这样就会引入一种“假溢出”现象,
数组中存在空余的空间,但是由于尾指针已经在最大位置,不能加入元素。
循环队列就可以用来解决 假溢出 问题, 当队列后面的满了,就从头在开始,形成头尾相接的循环.
出现的问题: front=rear即头指针和尾指针相等,但是对应两种情况:一种是队列是空,一种是队列是满。
所以,我们定义循环队列中空出一个位置为满队列状态。front指向头元素,rear指向尾元素的下一个位置。
那么循环队列的长度如何计算呢?
情况一: 当rear大于front时,循环队列的长度:rear-front
情况二: 当rear小于front时,循环队列的长度:分为两部分计算 0+rear 和 Quesize-front , 将两部分的长度合并到一起即为: rear-front+Quesize
所以将两种情况合为一种,即为: 总长度是(rear-front+Quesize)%Quesize
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询