一个关于队列的数据结构题? 己知循环队列存储在一维数组A[O…n-1]中

一个关于队列的数据结构题?己知循环队列存储在一维数组A[O…n-1]中,且队列非空时front和rear分别指向队头元素和队尾元索。若初始时队列为空,且要求第1个进入队列... 一个关于队列的数据结构题?
己知循环队列存储在一维数组A[O…n-1]中,且队列非空时front和rear分别指向队头元素和队尾元索。若初始时队列为空,且要求第1个进入队列的元素存储在A[0]处,则初始时front和rear的值分别为:

网络的版本都是front=0,rear=n-1。但是我觉得不对,我的分析是这样的:首先初始队列为空,那么可知front=rear;然后要求第1个进入队列的元素存储在A[0]处,那么就要求rear=n-1。从而我们可以得到front=rear=n-1
展开
 我来答
bjxyz
推荐于2017-11-22 · TA获得超过2900个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:420万
展开全部

网络版本是对的。

你没理解“队列非空时front和rear分别指向队头元素和队尾元索”,根据这句话当队列只有一个元素时,front==rear;当队为空时,front == (rear + 1)%n;

进队的操作为:

rear = (rear + 1) % n ;
Queue[rear] = elem ;

元素正好在下标为0的位置,此时front == rear == 0。

“队列非空时front和rear分别指向队头元素和队尾元索”意思就是front和rear都是“实指”,而你的理解中front是“虚指”,不同教材采用的方法不一样,一般题目中会说明

匿名用户
2021-04-20
展开全部
两个情况,一个是rear指向队尾元素的下一个,队满是(rear+1)%maxsize==front[留一个空间让队列不能判空/此时rear是指向留的空的元素],队空是rear=front;另一个是rear指向队尾元素,因为初始插入要在0,所以rear指向front前一个元素,队空是(rear+1)%maxsize==front;而队满的情况如果还是空一个空间,会与队空判断条件相同,所以要么设置一个变量记录,要么空两个元素用来区分队空条件
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我家的小田0212
2021-12-11
知道答主
回答量:2
采纳率:0%
帮助的人:800
展开全部

重点是“队列非空时front和rear分别指向队头元素和队尾元索”,我们知道队头和队尾里面肯定有数字,所以这句话通俗来说就是:在队列非空时front和rear要指向有数字的地方

要是front=rear=n-1,那么入队一个元素1之后,我们都知道入队只会让rear变动,所以rear指向0了(里面存储了1),但是front还是指向n-1,这是一个没有数字的区域,不满足“队列非空时front和rear分别指向队头元素和队尾元索”这句话,也就是不满足front和rear要指向有数字的地方,所以初始时front只能是在0那个位置上;

又根据“且要求第1个进入队列的元素存储在A[0]处”要满足这个条件,rear初始应该指向n-1;

所以结果:初始时front值为0,rear值为n-1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式