C语言的问题 栈
发布网友
发布时间:2023-07-31 18:45
我来回答
共2个回答
热心网友
时间:2023-08-07 04:28
明显地,这是用一个环形队列。
程序中 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://ke.baidu.com/view/2590100.htm,有非常详细的解释
热心网友
时间:2023-08-07 04:29
循环队列, 从 队列头输出到队尾
front; //头指针,队非空时指向队头元素
rear; //尾指针,队非空时指向队尾元素的下一位置
如果是 f = i;就是顺序队列
f = (i + 1) % MAXSIZE; 是循环队列