以下是两段代码的不同之处:

  1. 第一段代码使用了一个for循环来遍历链表,而第二段代码使用了一个while循环来遍历链表。两种循环的实现方式不同,但最终目的都是找到链表中的前一个节点。

  2. 在第一段代码中,循环条件是'pos->next != p',即循环终止条件是当pos的下一个节点等于p时停止循环。而在第二段代码中,循环条件是'prev->next != p',即循环终止条件是当prev的下一个节点等于p时停止循环。

  3. 在第一段代码中,返回的是'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; 	
}
C语言链表删除节点:两种实现方式对比

原文地址: https://www.cveoy.top/t/topic/qir0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录