发布网友 发布时间:2024-10-24 01:24
共3个回答
热心网友 时间:2024-11-06 20:38
代码这样理解:
LNode *p=h; // p指针开始时指向头结点
while(p->next!=r) p=p->next; // 这个时候的r应该是最后一个结点指针,这里判断当前指针的下一指针是否是最后指针,是就退出循环,循环退出后,那么当前指针p应该是指向倒数第二个结点。
p->next=NULL; // 因为最后结点r要删除,倒数第二结点p将变成新的最后结点,最后结点的特征就是没有下一结点,所有这里设置一下。
free(r); // 把原来的最后结点内存释放掉
r=p; // 设置新的最后结点为倒数第二结点p
热心网友 时间:2024-11-06 20:38
可以这样说,就相当于把倒数第二个节点的next设置为空,就相当于删除最后一个节点了。
热心网友 时间:2024-11-06 20:39
下一行有一个free(r)如果指针不是NULL可能会出问题