删除一个无头单链表的非尾节点(C语言)
来源:互联网 发布:淘宝卡包 编辑:程序博客网 时间:2024/06/05 22:15
void DelNotTailNode(PSListNode pos){ PSListNode pNode = NULL; assert(pos); if (NULL == pos->pNextNode) { return; } else { DataType temp = 0; //交换pos和pos->pNextNode的数据(相当于交换了两个结点的位置),使问题转换为删除pos指向的结点的下一个结点 temp = pos->data; pos->data = pos->pNextNode->data; pos->pNextNode->data = temp; pNode = pos->pNextNode; pos->pNextNode = pos->pNextNode->pNextNode; free(pNode); pNode = NULL; }}
首先要理解什么是无头结点的链表,什么是有头结点的链表,要是连这个都理解错了,就完了:
无头结点的链表:第一个节点既有数据域,又有指针域,是通过一个指向该链表的第一个节点的指针来标记该链表的。
有头结点的链表:第一个节点只有指针域,该指针域存放的是指向链表下一个节点的指针(或NULL),该链表通过头结点来标记。
无奈很多人把无头结点理解为了这样:
然后他就一直想,没有头,怎么能找到该链表啊,一直想,一直想。。。。。。最后还是放弃了,脑海里想着这题出错了吧。
PS:上面两张图片放的是最简单的无头结点的链表和有头结点的链表的形式。
0 0
- 删除一个无头单链表的非尾节点(C语言)
- C语言:【单链表】删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 在无头单链表的一个非头节点前插入一个节点(C语言)
- C语言实现非循环双链表节点的删除(带头结点尾结点)
- C语言:【单链表】在无头单链表的一个非头节点前插入一个节点
- 删除一个无头单链表的非尾节点【每日一题】
- 链表--删除一个无头单链表的非尾节点
- C语言实现非循环双链表节点的删除(不带头结点)
- 无头单链表的非尾节点删除
- 删除无头单链表的非尾节点
- 【链表】删除一个无头单链表的非尾节点 以及从尾到头打印单链表
- 删除一个无头单链表的非尾节点+从尾到头打印单链表
- 17_7_17:删除一个无头单链表的非尾节点。从尾到头打印单链表
- 笔试/面试:删除一个无头单链表的非尾节点 ,从尾到头打印单链表
- Android AudioTrack详解
- [编程题]输出蛇形数组 Java版
- 带CSS3特色的横幅显示
- 排序算法-选择排序和插入排序比较(待续未完)
- Android 最火的快速开发框架XUtils
- 删除一个无头单链表的非尾节点(C语言)
- 根据Android studio生成的keystore.jks文件申请高德地图key码 invalid user scode
- os模块 常用命令
- 转载/验证码
- Android 触摸屏(TP)问题现象分析和解决方法汇总
- sql_行转列
- activiti ace admin 整合 开发 后台框架集成 学习Demo
- spring aop 实现用户操作日志记录功能
- unity AR实物识别