c学习之单向链表的删除与清除操作

Posted 桂月二四

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c学习之单向链表的删除与清除操作相关的知识,希望对你有一定的参考价值。

我们尝试用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); 
  

以上是关于c学习之单向链表的删除与清除操作的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法

[单向链表与双向链表的实现]

线性表之单向链表的基本操作实现

C语言提升

单向链表的查找与删除

实例讲解——单向链表