77问答网
所有问题
q->front=(q->front+1)%max
判定循环队列满的条件为什么不是q->front==q->rear+1而是q->front==(q->rear+1)%maxsize?
举报该问题
推荐答案 2019-11-09
因为是
循环队列
,循环队列的思想是如果队头有空余的位置,则可以把数据插入到队头,从而是一个圈
q->front==q->rear+1明显是一个判定条件,判定当前队列是否已满,当当前队列q->front正好为0,q->rear为(maxsize-1,即整个队列的最后一个),q->rear+1就溢出了,(q->rear+1)%maxsize正好就是0,从而可以判断front和rear+1是不是同一个位置
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/GqvYYI388ppIvvYNGWv.html
相似回答
数据结构基础问题
答:
Q->
front=(Q
->
front+1)%MAX
size,当Q->front小于MAXsize时,增量是1,当Q->front大于MAXsize时,Q->front从0开始增加
已知二叉树采用链表存储结构,根结点指针为T,请写出计算二叉树中度为2...
答:
采用深度或者广度遍历就可以,分别采用栈或者队列结构。对于访问到的每个节点,如果度为2,就是所求的。比如用栈的话 push(ST,root)while(not empty(ST)){ node=pop(ST)if(node->left)push(ST,node->left)if(node->right)push(ST,node->right)} 上面的伪代码实际上就是图的深度遍历,二叉树...
循环队列,队满时: (rear
+1)%max
size
=front
为什么要对maxsize取余呢...
答:
Max
Size是你的数组的大小,如果最后
一
个元素位置被使用后,要再存下一个元素,那么按循环队列的定义,应该是存到数组的开头,而对MaxSize取余则可以使得下标从MaxSize-
1
变为0,然后递增,达到循环的目的。
判断一个循环队列是否已经满了的条件?
答:
判断一个循环队列
q
(最多n个元素)为满的条件是Q->
front==(Q
->rear
+1)%
n 队列的存储结构 1、队列的物理存储可以用顺序存储结构,也可用链式存储结构。相应队列的存储方式也分为两种,即顺序队列和链式队列。2、顺序队列可以用一维数组表示如下:#define
MAXQ
SIZE 100 //最大队列长度Typedef struct ...
如何创建一个字符循环队列,实现字符元素入队列、出队列、显示队列元素...
答:
MAXSIZE;}char dequeue(Queue *q) { if (isEmpty(
q)
) { printf("队列为空"); return -1; } char e = q->data[q->front]
;
q->
front = (q
->
front + 1) % MAX
SIZE; return e;}void display(Queue *q) { if (isEmpty(q)...
高分,急。。循环队列实现约瑟夫环挑错。
答:
if
(q
->front==q->rear)return 1;else return 0;} int deleteQue
(Q
uque **q,int *pelem)//删除元素 { if(isEmpty(*
q)
)return 0; //空反0 pelem=(*q)->elem[(*q)->front];(*q)->
front =(
(*q)->
front +1)%MAX
SIZE;return 0; //删除成功反0 } void main(){ in...
C语言问题
答:
对头指针+1:Q.
front=(Q
.
front+1)%MAX
SIZE 队尾指针+1:Q.reae=(Q.rear+1)%MAXSIZE 初始化:Q.front=Q.rear=0 队空:Q.front=Q.rear 队满:(Q.rear+1)%MAXSIZE=Q.front 求长度:(Q.rear-Q.front+MAXSIZE)%MAXSIZE MAXSIZE是为了防止越界,比如一共30个位置,队尾指到30了,如果...
大家正在搜