C语言的问题 栈
2个回答
展开全部
明显地,这是用一个环形队列。
程序中 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,自动回掉环形队列的开始处。
程序中 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,有非常详细的解释
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询