环形缓冲区实现队列的代码
Code for implementing queue with ring buffer
这是在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;
}
}
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;
这是在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;
}
}
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;