目录
0.引言
先附上已经可以进行打印的链表代码:
1.链表的查找
2.链表的删除
//链表的删除
node *q;
for(q=0,p=head; p; q=p,p=p->next) {
if(p->value==find) {
if(q) {
q->next=p->next;
} else {
head=p->next;
}
free(p);
break;
}
}
node *kl;
for(kl=head; kl; kl=kl->next) {
printf("%d ",kl->value);
}
我们在链表中进行删除,并不是说要删除这个节点中的那个储值的元素,而是要将整个节点删除,同时又要保证前后节点依然能连接起来。
删除节点,只需要将图中的①直接指向第三个节点就ok了,所以这里我们就需要一个node *q去记录每一次的p,当查找到要删除的数时,让q->next=p->next就ok了。但是这里也要注意一个细节:我们要先判断q是否存在,如果q=0则让head发生改变:head=p->next。最后要free(p)也就是删除这个节点!
后面一部分就是对删除后的链表进行的打印!
3.链表的清空
4.全部整合代码:
运行截图: