这是用C实现具有环形缓冲区的队列的程序的一部分,我不理解第8-9行。if(q->rear == q->max) q->rear = 0;这一行到底是什么意思?
如果后部索引等于最大容量...然后将零分配给后方?T_T,请帮帮我!
int Enque(IntQueue* q,int x)
{
if (q->num >= q->max)
return -1;
else {
q->num++;
q->que[q->rear++] = x;
if(q->rear == q->max)
q->rear = 0;
return 0;
}
}发布于 2019-05-12 14:46:40
q->que[]是一个整数数组。通过在数组中指定索引来访问单个数组q->que[]整数元素,例如:q->que[n];,其中n是从0到(q->max - 1)的值。
q->rear表示数组q->que[]的索引。q->rear的值可以是从0到(q->max -1)的任何值。因此,如果q->rear等于q->max,它将表示一个超出q->que[]数组末尾的索引,并且(作为循环队列)必须放回到数组的开头(q->que[0])。
因此,逻辑如下:
if (q->rear == q->max)
q->rear = 0;https://stackoverflow.com/questions/56096760
复制相似问题