销毁队列的代码是啥意思?Status Destroyqueue(LinkQueue &Q) {//队列Q存在则销毁Qwhile(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 02:29:30
销毁队列的代码是啥意思?Status Destroyqueue(LinkQueue &Q) {//队列Q存在则销毁Qwhile(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}

销毁队列的代码是啥意思?Status Destroyqueue(LinkQueue &Q) {//队列Q存在则销毁Qwhile(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}
销毁队列的代码是啥意思?
Status Destroyqueue(LinkQueue &Q) {
//队列Q存在则销毁Q
while(Q.front){
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}

销毁队列的代码是啥意思?Status Destroyqueue(LinkQueue &Q) {//队列Q存在则销毁Qwhile(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}
typedef struct QNode{
QElemType data;
struct QNode *next;//next为指向队列中下一结点的指针
}QNode,*QueuePtr;
typedef struct{
QueuePtr front,rear;//front&rear are pointers refer to the front and the rear of the queue.
}LinkQueue;//将结构体struct定义为LinkQueue,更符合人类语言理解.
Status Destroyqueue(LinkQueue &Q) {
//队列Q存在则销毁Q
while(Q.front){//Q.front是队列的队首节点,不为NULL时执行循环
Q.rear=Q.front->next;//Q.rear指向离队首最近的节点.
free(Q.front);释放队首的节点所在内存单元
Q.front=Q.rear;现在Q.front和Q.rear都指向离原来队首最近的节点.倘若执行Destoryqueue()前节点的个数>=2,则第一次执行次循环后仍满足循环条件继续循环,最终整个队列的内存全部被释放,队列被销毁.(建议在理解的时候画张图效果较好)
}