这里用了两种方式实现:
//这一种方式用来三个指针,一个用来遍历的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;
}
}
删除节点的过程可以分为两步:
- 找,找到要删除的节点。如何找,通过遍历
- 删,删除目标节点。如何删,通过前驱