当前位置: 首页 > news >正文

C语言:链表删除

链表删除分为头删除和中间删除(包含尾删除)。

同时注意单向链表原则:先连后断。

具体方法如下:

#include<stdio.h>
#include<stdlib.h>typedef struct node
{int s;struct node* pnext;
}list;list* addnode(list** pphead, list** ppend, int n)
{list* ptemp = malloc(sizeof(list));ptemp->s = n;ptemp->pnext = NULL;if (NULL == *pphead){*pphead = ptemp;*ppend = ptemp;}else{(*ppend)->pnext = ptemp;*ppend = ptemp;}
}void deletenode(list** pphead, list** ppend, int val)
{list* pdel = NULL;//头删除//删除标记指向头节点//头指针指向头结点的下一个//释放if ((*pphead)->s == val){pdel = *pphead;*pphead = (*pphead)->pnext;free(pdel);pdel = NULL;return;}list* pmark = *pphead;//中间删除//遍历链表//找到删除节点的前一个结点//删除标记指向遍历标记的下一个//遍历标记的下一个指向遍历标记的下一个的下一个//释放while (pmark->pnext != NULL){if (pmark->pnext->s == val){pdel = pmark->pnext;pmark->pnext = pmark->pnext->pnext;free(pdel);pdel = NULL;if (pmark->pnext == NULL)//判断是否是尾删除{*ppend = pmark;}return;}pmark = pmark->pnext;}}int main()
{list* phead = NULL;list* pend = NULL;//添加几个节点addnode(&phead, &pend, 1);addnode(&phead, &pend, 2);addnode(&phead, &pend, 3);addnode(&phead, &pend, 4);//删除deletenode(&phead, &pend, 4);//遍历链表,检查是否成功删除while (phead != NULL){printf("%d\n", phead->s);phead = phead->pnext;}return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙内核源码分析(原子操作篇) | 谁在为原子操作保驾护航
  • 阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技
  • 依赖倒置原则(Dependency Inversion Principle, DIP)
  • SQL - 创建 表和数据库
  • k8s综合项目
  • 【秋招笔试】8.18大疆秋招(第二套)-开发岗-三语言题解
  • Spring模块详解Ⅱ
  • 华为HCIP证书好考吗?详解HCIP证书考试难易程度及备考策略!
  • [HDCTF 2023]Welcome To HDCTF 2023
  • C++11:包装器
  • Java 多线程练习2 (抽奖比较Runnable写法)
  • 【Qt】 编辑框 | 按钮 的 初步了解
  • potplayer播放m2ts格式,截图
  • [python][代码]定义了一个用于AES加密和解密的工具类
  • 快速批量替换图片名称为指定名称(附代码)
  • [数据结构]链表的实现在PHP中
  • __proto__ 和 prototype的关系
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Create React App 使用
  • DOM的那些事
  • extjs4学习之配置
  • Flex布局到底解决了什么问题
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • mysql 数据库四种事务隔离级别
  • 反思总结然后整装待发
  • 分类模型——Logistics Regression
  • 技术发展面试
  • 使用 @font-face
  • 通过几道题目学习二叉搜索树
  • 详解移动APP与web APP的区别
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 译自由幺半群
  • 你对linux中grep命令知道多少?
  • Spring第一个helloWorld
  • 阿里云服务器如何修改远程端口?
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #QT 笔记一
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (LeetCode) T14. Longest Common Prefix
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (SERIES12)DM性能优化
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转载)利用webkit抓取动态网页和链接
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .equals()到底是什么意思?
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • @RequestBody的使用
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [100天算法】-二叉树剪枝(day 48)
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [AIGC 大数据基础]hive浅谈