这里用了两种方式实现:
//这一种方式用来三个指针,一个用来遍历的p指针,一个指向p的前驱的pre指针,还有一个标识目标节点的q指针
while(p!=null)
{
if(p->data==x)
{
q=p;
p=p->next;
pre->next=p;
free(q);
}
else
{
pre=p;
p=p->next;
}
}
//这一种方式用来两个指针,一个用来遍历的p指针,一个指向p的前驱的pre指针,
while(p!=null)
{
if(p->data==x)
{
pre->next=p->next;
free(p);
p=pre->next;
}
else
{
pre=p;
p=p->next;
}
}
删除节点的过程可以分为两步:
- 找,找到要删除的节点。如何找,通过遍历
- 删,删除目标节点。如何删,通过前驱
本文详细介绍了两种使用双指针在链表中删除指定节点的方法。第一种方法使用三个指针,分别用于遍历、前驱和目标节点;第二种方法仅用两个指针,同样能完成节点删除。在寻找和删除目标节点的过程中,关键在于正确调整前驱指针的连接,并释放目标节点的内存。这两种方法都是高效且易于理解的链表操作技巧。
6297

被折叠的 条评论
为什么被折叠?



