2023王道数据结构P40题二.1,关于是否会断链的问题
链表在删除一个结点p时为保证不断链,需要在删除前将p的前驱与后继链接起来,即p的前驱的指针域指向p的后继的地址,若将p的前驱记作q,可表示为q->next = p->next,也即为q->next = q->next->next。所以在一般情况下,仅知道一个结点p不知道其前驱是无法完成删除操作,会导致断链。
而王道教材上所给出的代码,其之所以能够完成删除操作,本质原因正如书中所写,“L为引用,是直接对原链表进行操作”。其代码如下:
先按如下两类情况进行分类讨论,为何做此分类,下文将予以解释:
1.需删除的结点并非链表的首结点
若删除的结点并非链表的首结点,则代码的执行必然会进入else模块中的递归嵌套。
首先对else模块内的递归进行分析,其传入的参数是L->next,将递归调用中的L记作L‘,因此在执行代码L = L->next时,即L’ = L’->next由于参数L’为引用变量 ,造成的一个结果就是L->next = L->next->next,成功将L->next结点删去,即成功删去L’。
如上图所示,代码L=L->next中,由于函数参数中的引用将L与其前驱的指针域所指向的地址关联起来了(这句话为本文重点,理解了这句话,整个问题迎刃而解),因此不会导致断链。
因此可以做出如下结论,只要删除结点时使用到了else模块中参数传递,该代码能够成功执行删除操作,不会导致断链。
那么,如果代码执行过程中,删除结点并未使用到else模块中的部分,又会如何?
上述假设仅在一种情况下成立,即需删除的结点为链表的首结点。
2.需删除结点为链表首结点
若删除链表的首结点,则L=L->next的执行结果,会直接将L->next作为新的链表的首结点。首结点本就不存在前驱结点,因此不存在断链,相当于直接把第一个结点给截去。
(这排版狗看了都摇头)
2023王道数据结构P40题二.1,关于是否会断链的问题相关推荐
- 【2023王道数据结构】【字符串匹配算法】字符串的KMP(next数组)模式匹配算法C、C++完整实现(可直接运行)
~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 字符串的KMP(next)模式匹配算 ...
- 2023王道数据结构考研习题汇总
2023王道数据结构考研复习习题汇总目录 文章目录 2023王道数据结构考研复习习题汇总目录 第2章:线性表 2.2线性表的顺序表示-综合应用题(基础题1-9) 2.2线性表的顺序表示-综合应用题(4 ...
- 【2023王道数据结构】【图】通过C++实现图的BFS(广度优先遍历)算法求单源最短路径问题C、C++完整实现(可直接运行)
~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 通过C++实现图的BFS(广度优先遍 ...
- 【2023王道数据结构】【线性表】思维拓展C、C++完整实现(可直接运行)
~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 一个长度为N的整型数组A[1-N], ...
- 【2023王道数据结构】【栈、队列和数组】思维拓展C、C++完整实现(可直接运行)
~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 设计一个栈,使它可以在O(1)的时间 ...
- 【2023王道数据结构】【串】思维拓展C、C++完整实现(可直接运行)
~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 编程实现:模式串在主串中有多少个完全 ...
- 【2023王道数据结构】【绪论】思维拓展-通过C++递归与非递归实现斐波那契数列C、C++完整实现(可直接运行)
~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 通过C++递归与非递归实现斐波那契数 ...
- 数据结构考研学习关于free是否会导致断链问题
王道数据结构p40.二.0 设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点. 解:设f(L,x)的功能是删除以L为首结点指针的单链表中所有值等于x的结点,显然f(L->next, ...
- 23王道数据结构代码题全解(二)
计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,仓库在这里 代码全部是用 C++ 写的,都可以编译运行,包含暴力解和最优解. 持续更新,目 ...
最新文章
- VMware 主机基板管理控制器的状态
- B2B专线宽带业务成为企业上云新战场——Vecloud
- python默认参数 可变对象_当心Python函数可变默认参数(list,set,dict…)的陷阱
- OpenYurt 单元化部署新增 Patch 特性
- php设计模式的六大原则(六):迪米特法则
- 移动测试架构演进 | 蚂蚁金服自动化用例管理探索
- 企业数字化转型的加速引擎 — 2019年中国数字中台行业研究报告
- 使用css3属性transition实现页面滚动
- 怎么设置vscode界面大小_vscode怎么放大界面
- 在计算机系统中对文件执行彻底删除,Windows系统中,教你彻底删除C盘的顽固文件,瞬间多出10个G!...
- python音标1003python音标_词汇小助手V1.2——可以显示英语单词的国际音标
- 收藏 | 江苏省各地教师公务员等实际工资爆料
- python redis.exceptions.ConnectionError
- 甘超波:NLP潜意识和意识
- 『光纤交换机级联设置 』光纤跳线及光纤交换机端口级联类型
- 高精度数字温度传感器为基于RTD和医疗应用的设计带来简便性
- 制作自己的标注数据集
- 脉冲星 6 月脉动 | Pulsar Summit 北美峰会圆满结束,ApacheCon 议程官宣
- 自定义店招应该具有的基本功能
- 科谱|5G终端移动入库、电信入库和联通入库测试用例浅析,自3GPP
热门文章
- 使用svg-sprite-loader 遇到的问题
- DCloud之APP离线SDK升级步骤(3.5.3升至最新版3.6.7.81556_20221018)
- 【每日力扣10】有效的数独
- pandas中的freq和inferred_freq等时间参数究竟有哪些
- 微商城应该怎样选择?
- 最新解决谷歌浏览器崩溃的方法
- NCT全国青少年编程能力等级测试教程(图形化编程、Python语言编程)
- 通过直链下载google网盘里的文件
- linux开机启动界面异常,Linux 界面不能启动的解决
- ineligible devices xcode6.3