84 Q.rear->next=p;
85 Q.rear=p; //注意此步! 先连接上,后转移。 86
87 return OK;
88 }
89
90 Status DeQueue(LinkQueue &Q,QElemType &e)
91 {//队头元素出列,并用e返回其值。 92
93 QueuePtr p;
94 if(Q.front==Q.rear)
95 return ERROR;
96 p=Q.front->next;
97 e=p->data;
98 Q.front->next=p->next;
99 if(Q.rear==p) //队列中只有一个元素。 100
Q.rear=Q.front; 101
free(p); 102
return OK; 103
} 104
105
Status QueueTraverse(LinkQueue Q,void (*vi)(QElemType)) {//从队头到队尾,依次对队列中每个元素调用函数vi。
QueuePtr p;
p=Q.front->next;
while(p)
{
vi(p->data);
p=p->next;
}
printf("\n");
return OK;
}