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

链表、双链表的插入和删除

一、链表

链表:是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构(二叉索引数) ,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。

什么是头结点和头指针?

头结点作用

1、防止单链表是空的而设的,当链表为空的时候,带头结点的头指针就指向头结点,如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL。

2、是为了方便单链表的特殊操作,能有效减少代码量,在插入在表头或者删除第一个结点时不用考虑特殊情况,删除或插入用户的第一个节点的值和删除或插入中间的值用一样的代码(头指针不为NULL,要操作的结点前总有一个结点),这样就保持了单链表操作的统一性!

3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。

4、总结来说,没有头结点对第一个结点的操作大多和中间结点不太一样,每个操作都要考虑特殊情况,有头结点的话就不必考虑那么多了,还不容易出现代码错误。

头指针:

1.头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针

2.头指针具有标识作用,单链表可以用头指针的名字来命名。

3.单链表中头指针指向第一个结点(不管带不带头节点,头指针始终指向第一个结点,不带头结点的空链表指向NULL)。 。

4.无论链表是否为空,头指针均不为空,头指针是链表的必要元素

单链表的每一个节点中有指向下一个结点的指针,不能进行回溯,也就是只能从头开始找,不方便查找。

双链表的每一个节点给中既有指向下一个结点的指针,也有指向上一个结点的指针,可以快速的找到当前节点的前一个节点。

循环链表

 

PS:PPT图片均来自王道考研


http://www.kler.cn/a/4306.html

相关文章:

  • 基于机器学习的用户健康风险分类及预测分析
  • AIGC时代:如何快速搞定Spring Boot+Vue全栈开发
  • 【leetcode 13】哈希表 242.有效的字母异位词
  • Docker--Docker Compose(容器编排)
  • 数据结构之双链表(C语言)
  • C#中的ref struct
  • PhotoZoom Pro2023免费版图形图像放大工具
  • Maven <repository> 配置小知识
  • Visual Genome数据集简介
  • SpringBoot 将PDF转成图片或Word
  • 08基于拉丁超立方法的风光场景生成与削减
  • Linux常用文件系统简述
  • 分享7个你可能还不知道的JS Web API,构建现代化网站轻松搞定
  • k8s证书过期的解决方案
  • 作业帮基于明道云开展的硬件业务数字化建设
  • 基于springboot实现医院信息管理系统【源码+论文】
  • Promise API
  • 036:cesium加载GPX文件,显示图形
  • MAL-PEG-FITC荧光素-聚乙二醇-马来酰亚胺的结构式
  • 【CSDN线上竞赛40】小结
  • 业务数据采集模块
  • SSM之SpringBoot day01
  • Python引用包路径查询
  • [leetcode] 动态规划
  • SpringBoot 如何将配置文件挂到 jar 包外面?
  • 内核编译(准备工作)