C语言链表删除节点:两种实现方式对比
以下是两段代码的不同之处:
-
第一段代码使用了一个for循环来遍历链表,而第二段代码使用了一个while循环来遍历链表。两种循环的实现方式不同,但最终目的都是找到链表中的前一个节点。
-
在第一段代码中,循环条件是'pos->next != p',即循环终止条件是当pos的下一个节点等于p时停止循环。而在第二段代码中,循环条件是'prev->next != p',即循环终止条件是当prev的下一个节点等于p时停止循环。
-
在第一段代码中,返回的是'pos->next',即删除节点p之后的下一个节点。而在第二段代码中,返回的是'prev->next',即删除节点p之后的下一个节点。
总的来说,两段代码的实现逻辑相似,但细节上有一些不同。
代码示例:
node *list_del(node*p)
{
node *pos;
for(pos=p;pos->next!=p;pos=pos->next);
pos->next=p->next;
free(p);
return pos->next;
}
node *list_del(node *p)
{
node *prev = p;
while (prev->next != p)
{
prev = prev->next;
}
prev->next = p->next;
free(p);
return prev->next;
}
原文地址: https://www.cveoy.top/t/topic/qir0 著作权归作者所有。请勿转载和采集!