一道数据结构题,这里r代表尾指针,h代表头结点,请问这个b选项,当p->next不等于尾指针时,就
一直p=p->next遍历,它不是应该遍历到p->next=r就停止了么,后面p->next=NULL,这个意思是把r指针指向的尾结点删除的的意思吗?求指教,谢谢...
一直p=p->next遍历,它不是应该遍历到p->next=r就停止了么,后面p->next=NULL,这个意思是把r指针指向的尾结点删除的的意思吗?求指教,谢谢
展开
展开全部
代码这样理解:
LNode *p=h; // p指针开始时指向头结点
while(p->next!=r) p=p->next; // 这个时候的r应该是最后一个结点指针,这里判断当前指针的下一指针是否是最后指针,是就退出循环,循环退出后,那么当前指针p应该是指向倒数第二个结点。
p->next=NULL; // 因为最后结点r要删除,倒数第二结点p将变成新的最后结点,最后结点的特征就是没有下一结点,所有这里设置一下。
free(r); // 把原来的最后结点内存释放掉
r=p; // 设置新的最后结点为倒数第二结点p
LNode *p=h; // p指针开始时指向头结点
while(p->next!=r) p=p->next; // 这个时候的r应该是最后一个结点指针,这里判断当前指针的下一指针是否是最后指针,是就退出循环,循环退出后,那么当前指针p应该是指向倒数第二个结点。
p->next=NULL; // 因为最后结点r要删除,倒数第二结点p将变成新的最后结点,最后结点的特征就是没有下一结点,所有这里设置一下。
free(r); // 把原来的最后结点内存释放掉
r=p; // 设置新的最后结点为倒数第二结点p
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询