关于数据结构的一点问题,求大侠指教!这段是循环链表的内容,是删除队头元素用的,谢谢~~~

externStatusDeQueue(SqQueue&Q,QElemType&e){//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK//否则返回ERRORi... extern Status DeQueue(SqQueue &Q,QElemType &e)
{
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK
//否则返回ERROR
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE; //这句看不懂啊
return OK;
}

不知道那一句是什么意思
错了,是循环队列的……
谢谢哦~终于明白了~~感谢其他几个朋友帮忙了,不过最佳答案只能有一个,所以就取一楼了~不过真的很感谢你们~~~
展开
 我来答
tteerrii
2012-04-10 · TA获得超过432个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:205万
展开全部
循环队列是头尾相连的。比如数组有5个元素,下标分别是0,1,2,3,4.
当队尾指针到达4的时候,可能队头指针为3,这时,还有下标为0,1,2的空间可用。
但如果尾指针rear+1的话,就会超出下标上限。所以这时候4+1=5,要和数组最大元素个数求余数,得0,从而构成循环。
队头指针front也是同样道理。
这条语句的具体作用就是front指针+1后与MAXQSIZE做求余数运算,从而构成循环。
linxxx3
2012-04-10 · 超过69用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:187万
展开全部
循环队列,逻辑上所有元素存在一个环上,但实际物理上是在一个固定长度的数组里,存储空间是有限的,限制了最大元素个数是MAXQSIZE,%运算是求余数。总体效果是当访问下一个元素的时候,如果到达数组的末尾,则跳回开头继续。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-04-10
展开全部
Q.front=(Q.front+1)%MAXQSIZE; //这句看不懂啊
这句是为了防止链表溢出!
例如:链表长度为10时,而front现在指向第10个元素,如果front+1就会产生溢出,而此时就要将front+1对 链表长度 取余,这样+1后的front指向链表的第一个位置,这样也就实现了循环,防止了溢出!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式