• 删除结点

与插入结点类似,数组为了保持其顺序存储的特性,在删除某个数据时,其后面的数据都要依次前移,而链表中结点的删除仍然只需要对结点周围进行小范围操作就可以了,不必去修改其他结点。

还是先来具体分析删除结点这个功能。

(1)必须知道对哪个链表操作,所以表头指针head是必须知道的。

(2)一般来说,待删除的结点是由结点数据确定的,但是我们还要操作待删除结点之前的结点(或指针),以连接前后两段链表。之前写好的search函数只能找到待删除的结点,却无法找到这个结点的前趋结点。所以,只好放弃search函数,另外再编程一个函数来实现。

(3)令pGuard指针为待删除结点的前趋结点指针。

(4)由于要对待删除结点作内存释放,需要一个指针p指向待删除结点 。

(5)如果待删除结点为头结点,则要操作表头head,作为特殊情况处理。

(6)在删除结点的过程中,要始终保持所有的结点都在我们控制的范围内,保证链表的完整性。为了达到这一点,还是采用先连后断的方式,即先把待删除结点的前趋和它的后继结点连接,在把待删除结点与它的后继结点断开,并释放空间。

由于delete是C++中的保留字,无法用它作为函数名,所以只能用Delete,C++对大小写很敏感,delete和Delete是不同的,分析好了就可以开始写函数实现了。

首先我们在之前的代码中声明函数原型

编写删除结点函数

  • 清除链表

链表的结点是动态分配的,如果在程序结束之前不释放内存,会造成内存泄露。因此,编写一个清除链表函数就显得相当必要。我们先来分析一下清除链表这个功能实现步骤。

(1)必须知道对哪个链表进行操作,所以表头head是必须知道的,并且清除整个链表后要将其改为NULL。

(2)类似于删除结点,需要一个指针p来指向待删除结点。

(3)类似删除表头结点操作,仍然要先连后断,

下面我们写一个函数来实现此功能。

功能测试

本篇完!欢迎大家收藏与转发,下一篇《C++程序设计实战篇,高效阅读程序代码》

清除扇区和低格哪个好_C++入门篇(四十五),结点删除与链表的清除相关推荐

  1. c++ 数组初始化_C++入门篇(二十九),字符数组在内存中存储的情况

    我们以前说过,字符和字符串是不同的.字符只能是一个,字符串是由若干个字符链接而成的,可是'a'和"a"有区别吗? 其实字符和字符串的区别有点像单词和句子的区别,一个句子可能只有一个 ...

  2. c#中接口的使用方法图解_C#图解教程 第十五章 接口

    接口 什么是接口 接口是指定一组函数成员而不实现它们的引用类型.所以只能类和结构来实现接口. 这种描述比较抽象,直接来看个示例. 下例中,Main方法创建并初始化了一个CA类的对象,并将该对象传递给P ...

  3. 中双目运算符_C++日志(四十)教你如何以非成员函数的形式重载运算符

    上一篇日志中讲述了如何通过类的非静态函数成员,进行运算符重载: 机器学习入坑者:C++日志(三十九)教你如何以类的非静态成员函数形式重载运算符​zhuanlan.zhihu.com 在C++中,同样可 ...

  4. 使用“override”声明的成员函数不能重写基类成员_C++日志(三十五)虚基类与其子类的构造函数...

    第三十四篇日志中提到,子类对象调用父类同名的函数时需要使用作用域标识符进行限定,这是在任何继承情况下都可以使用的普适方法. 问题引入: 考虑一种特殊的情况:子类全部或部分的基类(称为中间基类)同是继承 ...

  5. c++ string 拼接_C++日志(二十五)字符数组、字符数组指针和string类

    C++中字符串的表示方式有很多种,根据自己目前掌握的有三种: 字符数组: 字符数组指针: 标准库string类: 上面几种方式各有优点和缺点,按照自己的观点,如果处理的字符串的任务比较简单,则使用前两 ...

  6. “磁盘低格工具”帮你彻底清除磁盘数据不留痕迹的方法

    有时候你想让自己的磁盘数据彻底清除干净,但是又找不到好的磁盘清除工具."磁盘低格工具"可以把你的数据清除的一干二净,但是这样毁损伤磁盘,不建议多次使用.此工具可以详细列出磁盘硬件信 ...

  7. 低格格式化过程及与高级格式化的区别

    一.认识硬盘格式化 "格式化"这个词对于一个电脑用户而言绝对不应该陌生.当我们在进行一个全新的WINDOWS安装时,或是对一个硬盘上的所有数据进行"干净"的处理 ...

  8. 图解硬盘低格操作方法

    一.认识硬盘格式化 "格式化"这个词对于一个电脑用户而言绝对不应该陌生.当我们在进行一个全新的WINDOWS安装时,或是对一个硬盘上的所有数据进行"干净"的处理 ...

  9. 全面认识硬盘格式化 详解硬盘低格操作方法

    在以前的文章中,我们曾向朋友们介绍了一些硬盘的使用技巧及维护保养方法,相信朋友们还记得曾给大家介 绍过一篇关于硬盘坏道的文章吧.详细请点击<从保养做起 解析硬盘坏道的原因及修复办法 >,在 ...

最新文章

  1. android ui篇
  2. 【学习笔记】分析函数(开窗函数)
  3. 【Mybatis】 mapper XML 文件中使用 association 实现一对一关联
  4. 主流机器学习模型模板代码+经验分享[xgb, lgb, Keras, LR]
  5. html中label的寬度無法修改,如何设置HTML span、label 的宽度
  6. 物联网在智慧林业中的应用
  7. android中屏保功能项目,【Android】一段时间不操作弹出【屏保】效果
  8. MySQL主从同步延迟
  9. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_4_Lambda标准格式...
  10. DescribingDesign Patterns 描述设计模式
  11. C语言画爱心代码分析
  12. 动态爬虫之手机版QQ空间登录
  13. Nginx配置不带www自动跳转到www域名
  14. 陈艾盐:春燕百集访谈节目第二十六集
  15. java递归多层(多节点)xml和map互相转换
  16. 电动车治理再度升级,多地将有“新变化”
  17. 人——Web3的新平台
  18. android无线充电器推荐,和安卓通用的无线充电器门派推荐
  19. ACM-ICPC 2018 沈阳赛区网络预赛(E F G J K)
  20. js实现小球抛物线运动

热门文章

  1. 从零部署TiDB集群
  2. IDEA界面太丑??尝试一下这几个插件!
  3. 终端复用命令行神器:tmux
  4. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 | 必须收藏!
  5. 这块抖音爆红的支架,搞到一波优惠,按需而入!
  6. win10安装dorcker笔记
  7. c++不允许使用不完整的类型
  8. 一文读懂GAN, pix2pix, CycleGAN和pix2pixHD
  9. Linux下给挂载U盘或者SD卡
  10. 海思3559 人脸识别