作者:一线天24_226 | 来源:互联网 | 2023-08-06 17:09
下面是两种根据节点地址删除链表节点的实现方式:voidDelete(structNode*a,structNode*tmp){structNode*ta;while(t-&g
下面是两种根据节点地址删除链表节点的实现方式:
void Delete(struct Node * a,struct Node * tmp)
{
struct Node * t = a;
while(t->next != NULL)
{
if(t->next == tmp)
{
t->next = t->next->next;
free(tmp);
break;
}
t = t->next;
}
}
这种正确
void Delete(struct Node * a,struct Node * tmp)
{
struct Node * t = a->next;
while(t != NULL)
{
if(t == tmp)
{
t = t->next;
free(tmp);
break;
}
t = t->next;
}
}
这种错误
这两种开起来 相似,其实操作起来,如果不是对指针和指针变量特别熟悉的话,很难发现有什么问题
第一种自己对比下面分析一下就知道了。
看看第二种;
如果 节点2为tmp 要删除的节点