这是用于在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;
}
}
答案 0 :(得分:1)
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[]
数组末尾的索引,并且(作为循环队列)必须重新定位到数组的开头({{1)}。
因此,逻辑:
q->que[0]