数据结构中关于队列的问题p=Q.front->nexte=p->dataQ.front->next=p->nextif(Q.rear==p)Q.rear=Q.frontfree(p)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 16:54:53
数据结构中关于队列的问题p=Q.front->nexte=p->dataQ.front->next=p->nextif(Q.rear==p)Q.rear=Q.frontfree(p)
数据结构中关于队列的问题
p=Q.front->next
e=p->data
Q.front->next=p->next
if(Q.rear==p)Q.rear=Q.front
free(p)
数据结构中关于队列的问题p=Q.front->nexte=p->dataQ.front->next=p->nextif(Q.rear==p)Q.rear=Q.frontfree(p)
这段代码的目的是删除队列中的第二个元素,并且将其数据值存入变量e.
p=Q.front->next
这句是设置一个临时指针p指向 队列Q 的 队首元素 的 下一个元素, 也就是队列Q的第二个元素.
e=p->data
给变量e赋值为 p指向的元素 的 数据值,也就是 队列Q 的 第二个元素 的 数据值.
Q.front->next=p->next
让 队列Q 的 队首元素 的 下一个元素 指向为 p 的 下一个元素. 认真理解一下,其实就是让队列Q的队首 直接连向 队列Q的第二个元素(即p指向的) 的 下一个元素, 即队列Q的第三个元素. 综合考虑就是让第二个元素被"架空"了,第一个元素跳过第二个元素直接指向第三个元素,等价于将第二个元素踢出队列.
if(Q.rear==p)Q.rear=Q.front
这里是判断是否p就是队列的队尾,也就是判断是否队列只有两个元素. 如果是这样,那么队尾就设置为队头,因为队列在删除第二个元素之后就只剩下一个元素(队头)了.
free(p)
释放p指向的元素的内存,也就是彻底的删除了队列Q的第二个元素.