数据结构基础问题出队 void DeQueue(QUEUE*Q,QueueEntry *item){if (QueueEmpty(*Q)) exit(“Queue is empty.”);else {Q->front=(Q->front+1)%MAX_QUEUE;*item=Q->item[Q->front];}}中Q->front=(Q->front+1)%MAX_QUEUE 为什么他可以使队头元素

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 16:07:45
数据结构基础问题出队 void DeQueue(QUEUE*Q,QueueEntry *item){if (QueueEmpty(*Q)) exit(“Queue is empty.”);else {Q->front=(Q->front+1)%MAX_QUEUE;*item=Q->item[Q->front];}}中Q->front=(Q->front+1)%MAX_QUEUE 为什么他可以使队头元素

数据结构基础问题出队 void DeQueue(QUEUE*Q,QueueEntry *item){if (QueueEmpty(*Q)) exit(“Queue is empty.”);else {Q->front=(Q->front+1)%MAX_QUEUE;*item=Q->item[Q->front];}}中Q->front=(Q->front+1)%MAX_QUEUE 为什么他可以使队头元素
数据结构基础问题
出队
void DeQueue(QUEUE*Q,QueueEntry *item)
{
if (QueueEmpty(*Q)) exit(“Queue is empty.”);
else {
Q->front=(Q->front+1)%MAX_QUEUE;
*item=Q->item[Q->front];
}
}
中Q->front=(Q->front+1)%MAX_QUEUE 为什么他可以使队头元素删除?

数据结构基础问题出队 void DeQueue(QUEUE*Q,QueueEntry *item){if (QueueEmpty(*Q)) exit(“Queue is empty.”);else {Q->front=(Q->front+1)%MAX_QUEUE;*item=Q->item[Q->front];}}中Q->front=(Q->front+1)%MAX_QUEUE 为什么他可以使队头元素
把队列想像成一个环形的结构,这样就不会造成假溢出(Q->rear=Maxsize,而Q->front!=0,数组在0到Q->front这段下标里面还可以存数据),想像成一个环形的结构,那么Q->front自增1就不是Q->front=(Q->front+1)了,因为我们要当Q->front=Maxsize的时候再加1就要变成Q->front=0,所以用取模的方式.Q->front=(Q->front+1)%MAXsize,当Q->front小于MAXsize时,增量是1,当Q->front大于MAXsize时,Q->front从0开始增加