我们尝试用for循环,来搜索链表中的某个元素。在搜到数据的同时能否将其删除呢?
链表删除的原理:如图所示,只需将待删除节点的上一个节点指向下一个节点即可(部分代码如下)
scanf("%d",&number);
Node *p,*q;
//删除某个元素
for(q = NULL,p = list.head; p ; q=p,p = p->next)
{
if(number == p->value)
{
if(q == NULL) list.head = p->next;
else q->next = p->next;
free(p);
break;
}
}
下面是清除操作,只需free每一个节点即可
//链表清除
for(p = list.head;p;p=q)
{
q = q->next;
free(p);
}