C语言的问题 栈

 我来答
freeeeeewind
2014-03-26 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1324万
展开全部
明显地,这是用一个环形队列。
程序中 f =(i+1)%MAXSIZE的意思是取最后一个一个元素的索引。这个语句中:
1)MAXSIZE一个常数(很可能是宏)表示队列里最多能容纳元素的个数。
2)(i+1)的值是往下移动一个索引(因为i=Q->front, 所以i+1值是队列最前头的元素的索引)
3)f=(i+1)%MAXSIZE,是利用取余运算,实现环形队列下标索引的"回头",即如果移动到最后队列最后位置(即如果i =MAXSIZE-1)则f=(i+1)%MAXSIZE =0,自动回掉环形队列的开始处。
追问
实现 回头 当移动到最后队列之后会转到队列的开始处 这样不是一直循环了吗 那什么时候才跳出
追答
不会一直循环的;
当 i = q->rear 时,循环就结束了。i = q->rear 表示队列位置以及到最末尾了,即队列已经"空"了。
请参考http://baike.baidu.com/view/2590100.htm,有非常详细的解释
百度网友3fe025987
2014-03-26 · TA获得超过1874个赞
知道小有建树答主
回答量:1055
采纳率:62%
帮助的人:544万
展开全部
循环队列, 从 队列头输出到队尾
front; //头指针,队非空时指向队头元素
rear; //尾指针,队非空时指向队尾元素的下一位置
如果是 f = i;就是顺序队列
f = (i + 1) % MAXSIZE; 是循环队列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式