热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

数据结构之单链表的创建与删除

对于每个链表来说,它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。创建单链表的过程就是一个动态生成链表的过程。即从“空表”的初始状态起,依次











对于每个链表来说,它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。
创建单链表的过程就是一个动态生成链表的过程。即从“空表”的初始状态起,依次建立各元素结点,并逐个插入链表。
单链表整表创建的算法思路:



  1. 声明一指针 p 和计数器变量 i;
  2. 初始化一空链表 L;
  3. 让 L 的头结点的指针指向 NULL,即建立一个带头结点的单链表;
  4. 循环:

    • 生成一新结点赋值给 p;
    • 随机生成一数字赋值给 p 的数据域 p->data;
    • 将 p 插入到头结点与前一新结点之间。


头插法

先让新结点的 next 指向头结点之后,然后让表头的那个指向新节点。


xpHzPtnjhT.png!large

头插法建立链表虽然算法非常简单,但生成的链表中结点的次序和输入的顺序是相反的。这也是头插法不好的一个方面。
我们为什么不把新结点都放到最后呢,这才是排队时的正常思维,所谓的先来厚道。我们把每次新结点都插在终端结点的后面,这种算法称之为「尾插法」。


尾插法

r->next = p;
r = p;

kfXOOoRcFY.png!large
将刚才的表尾终结点 r 的指针指向新结点 p。
dUcwKJqDeH.png!large
本来 r 是在 ai-1 元素的结点,可现在它已经不是最后的结点了,现在最后的结点是 ai,所以应该要让将 p 结点这个最后的结点赋值给 r。此时 r 又是最终的尾结点了。


单链表的整表删除

当不打算使用这个单链表时,需要把它销毁,其实也就是在内存中将它释放掉,以便于留出空间给其他程序或软件使用。

单链表整表删除的算法思路:



  1. 声明指针 p 和 q;
  2. 将第一个结点赋值给 p;
  3. 循环:

    • 将下一结点赋值给 q;
    • 释放 p;
    • 将 q 赋值给 p;




推荐阅读
  • OpenWrt 是一款高度可定制的嵌入式 Linux 发行版,广泛应用于无线路由器等领域,拥有超过百个预装软件包。本文详细探讨如何在 OpenWrt 上通过 Luci 构建自定义模块,以扩展其功能。 ... [详细]
  • Python作为一种广泛使用的高级编程语言,以其简洁的语法、强大的功能和丰富的库支持著称。本文将详细介绍Python的主要特点及其在现代软件开发中的应用。 ... [详细]
  • ipvsadm命令简介:ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在fedora14、Linux6.0之后系统中 ... [详细]
  • 立志要引领电视行业趋势的荣耀,最终还是向价格“弯了腰”
    文|佘凯文来源|智能相对论(aixdlun)5月份,“大屏”市场又起风云,各大品牌不约而同地发布了自家新产品。5月26日࿰ ... [详细]
  • 导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • Python图像处理库概览
    本文详细介绍了Python中常用的图像处理库,包括scikit-image、Numpy、Scipy、Pillow、OpenCV-Python、SimpleCV、Mahotas、SimpleITK、pgmagick和Pycairo,旨在帮助开发者和研究人员选择合适的工具进行图像处理任务。 ... [详细]
  • 图像中的边缘信息主要集中在高频部分,因此图像锐化或边缘检测实质上是进行高频滤波。微分运算能够增强信号的高频成分,从而在空间域中通过计算微分实现图像锐化。本文将详细介绍如何使用 Python 实现 Canny 边缘检测算法。 ... [详细]
  • Flutter 高德地图插件使用指南
    本文档详细介绍了如何在Flutter项目中集成和使用高德地图插件,包括安装、配置及基本使用方法。 ... [详细]
  • 本文介绍了Windows驱动开发的基础知识,包括WDF(Windows Driver Framework)和WDK(Windows Driver Kit)的概念及其重要特性,旨在帮助开发者更好地理解和利用这些工具来简化驱动开发过程。 ... [详细]
  • 前端监控系列2 | 深入探讨JS错误监控的重要性与实践
    作者:彭莉,火山引擎APM研发工程师,专注于前端监控技术的研发。本文将深入讨论JS错误监控的必要性及其实现方法,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文深入探讨了OpenCV中的Canny边缘检测算法,并通过具体的Python代码实例展示了如何实现特定区域的轮廓线提取。适合初学者和专业人士参考。 ... [详细]
  • 在近期的百度大数据开放会议上,计算机科学领域的专家怀进鹏教授的演讲引发了广泛关注。尽管演讲内容高深复杂,但对于那些对计算机科学和人工智能领域有所了解的人来说,这场演讲无疑揭示了未来技术发展的无限可能性。 ... [详细]
  • 本文探讨了如何将简单工厂模式与策略模式结合使用,以提高PHP程序设计中的灵活性和可维护性。通过这种方式,客户端代码无需直接实例化具体的算法类,而是通过工厂方法根据输入参数选择合适的策略。 ... [详细]
  • databasesync适配openGauss使用指导书
    一、database-sync简介database-sync作为一种开源辅助工具,用于数据库之间的表同步,更确切的说法是复制,可以从一个数据库复制表到另一个数据库该工具支持的功能如 ... [详细]
author-avatar
小胖胖的夢2502895687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有