链表、头指针、头结点

article/2025/11/9 1:00:53

    图1为线性表(ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG)的逻辑状态。头指针 指示链表中第一个结点(即第一个数据元素的存储映像)的存储位置。同时,由于最后一个数据元素没有直接后继,则线性链表中最后一个结点的指针为“空”(NULL)。

图2.6

图1 线性链表的逻辑状态

由上述描述可见,单链表可由头指针来唯一确定,在C语言中可用“结构指针”来描述。


有时在单链表的第一个结点之前附设一个结点,称之为头结点 头结点的数据域可以不存储任何信息,也可以存储如线性表长度等类的附加信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。如图2(a)所示,此时,单链表的头指针指向头结点。若线性表为空,则头结点的指针域为“空”,如图2(b)所示。

图2.7 图2 带头结点的单链表   (a)非空表;(b)空表

    循环链表 是另一种形式的链式存储结构。它的特点是表中最后一个节点的指针域指向头结点,整个链表形成一个环。由此,从表中任一结点出发均可找到表中其他结点,如图3所示为单链的循环链表

图2.12  图3 单链循环表 (a)非空表;(b)空表

循环链表的操作和线性链表基本一致,差别仅在于算法中的循环条件不是p或p->next 是否为空,而是它们是否等于头指针,但有的时候,若在循环链表中设立尾指针而不设头指针(如图4(a)所示),可使某些操作简化。例如将两个线性表合并成一个表时,仅需将一个表的尾表和另一个表的头表相接。当线性表以图2.4(a)的循环链表作存储结构时,这个操作仅需改变两个指针值即可,运算时间为O (1)。合并后的表如图4(b)所示。

图2.13 图4 仅设尾指针的循环链表 (a)两个链表;(b)合并后的表

     以上讨论的链式存储结构的节点中只有一个指示直接后继的指针域,由此,从某个结点出发只能顺指针往后寻查其他结点。若要寻查节点的直接前趋,则需从表头指针出发。换句话说,在单链表中,NextElem的执行时间为O(1),而PriorElem的执行时间为O(n)。为克服单链表这种单向性的缺点,可利用双向链表 。顾名思义,在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前趋。在C语言中可描述如下:

和单链的循环表类似,双向链表也可以有循环表,如图5(c)所示,链表中存有两个环,图5(b)所示为只有一个表头结点的空表。在双向链表中,若d为指向表中某一个结点的指针(即d为DuLinkList型变量),则显然有

d->next->prior=d->prior->next=d

图2.14

图5 双向链表示例 (a)结点结构;(b)空的双向循环链表;(c)非空的双向循环链表


http://chatgpt.dhexx.cn/article/bDeN40wb.shtml

相关文章

头结点和头指针的详解

文章目录 头结点和头指针的详解1. 什么是结点?2. 链表最后一个元素3. 头结点4. 头指针 头结点和头指针的详解 1. 什么是结点? 为了表示每个数据元素ai与其直接后续元素ai1之间的逻辑关系,对于数据元素ai来说,除了存储其本身的信息…

头指针VS头结点 以及 如何理解头结点

头指针VS头结点 头指针和头结点是两个不同概念。 链表是它们的范畴。 1.头指针是指向链表第一个节点的指针,如果此链表第一个节点是头结点,那么头指针就指向头结点。 2.头结点内通常不储存数据,但不排除例外,有时候可能会储存链…

【头结点】【头指针】【首元结点】

2022 -1-14 文章目录 2022 -1-141. 定义:2. 哨兵(头结点)3. 有无头结点的单链表的创建3.1 有头结点3.1.1 头插法:3.1.2 尾插法: 3.2 无头结点3.2.1 头插法:3.2.2 尾插法: 1. 定义: …

python 链表中头结点的含义以及引入头结点的作用

一、概念 头结点:是虚拟出来的一个结点,不保存数据。头结点的next指针指向链表中的第一个节点。对于头结点,数据域可以不存储任何信息,也可存储如链表长度等附加信息。头结点不是链表所必需的。 头指针:是指向第一个结点的指针,如果链表没有…

数据结构:头指针,头结点详解(新手.小白)

如果不想看定义的话,可以看我的第二部分,里面有我自己遇到的一些疑难。 下文中出现的有关于java的,也有c语言的指针(可以看成java的引用变量),觉得写得不好,多多包涵 目录 (一)…

头结点的含义以及引入头结点的作用

一、概念 头结点:是虚拟出来的一个节点,不保存数据。头结点的next指针指向链表中的第一个节点。对于头结点,数据域可以不存储任何信息,也可存储如链表长度等附加信息。头结点不是链表所必需的。 头指针:是指向第一个结点的指针,如果链表没有…

qpython 3h下载_【分享】QPython 3H3.0.0 一个伟大的脚本编辑器!

这有点。。。东西!!! 【应用名称】:QPython 3H 【应用版本】:3.0.0 【应用大小】:25.41M 【软件介绍】: 这个软件集成了Python3解释器、Console控制台、QEdit编辑器和SL4A库,可以直接在安卓手机上运行Python代码&…

qpython3l_qpython3例子

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在控制台使用计划界面创建使用计划,并将使用计划与已创建的密钥对绑定(参考 使用计…

qpython 3h_QPython 3H

qpython 3h一款用于线上编辑来提供的手机软件,能够让你轻松的进行法语内容的快速编辑,用户只需要通过输入之后即可轻松的在软件生成法语,还能够轻松的将文字转化成相对应的法语让你在翻译的时候享受便捷效果,更是还拥有着独特的解…

说一说Qpython3在Android手机上的应用

QPython3是一款可以完美运行于Android平台上的Python3的脚本引擎,QPython3整合了Python3解释器、Console、编辑器和SL4A库。让你在Android设备上也能方便的开发Python项目。 研究Qpython也有一段时间了,一直想记录一些东西以便后面可以回顾,…

Visio使用技巧备忘录

用Visio画图过程中,将遇到的问题记录下来,以免忘记。 内容如下: 1、画流程图时,新建,根据需求选里面的模板。(第一次选的空白绘图,啥都没有) 2、画箭头,点击指针工具旁边…

Visio使用技巧之默认字体大小更改

然而这东西不能保存,但是也算是全局设置,免了一步一步设置的烦恼

visio 使用技巧汇总

1.visio中图形旋转任意角度的方法 视图----任务窗格----大小与位置----角度 2.箭头形状 更多形状---流程图----箭头形状 3.汇制虚线框 从基本形状中拖出一个矩形,右击矩形,选择设置形状格式,填充选择无填充,开始菜单栏中的形状样式选择线条---虚线即可 4.云状图 (1)开始---…

【visio使用技巧】图片导出pdf时去掉多余空白

问题 在visio导出pdf格式的图片时,往往会存在多余的白边,如下图所示: 解决方法 依次点击:菜单栏→文件→选项→自定义功能区→勾选“开发工具”→确定。 依次点击菜单栏→开发工具→显示ShapeSheet→页→Print Properties→将…

软件开发过程中的Visio使用

文章目录 前言一、思维导图二、用例图三、跨系统流程图四、流程图五、时序图六、其他图形 前言 在软件需求分析和设计过程中,时常需要通过图形来梳理和表达软件的运行原理。visio是一款专业的办公绘图软件,具有简单、便捷等关键特性。它能够帮助我们将自…

visio使用小技巧

文章目录 1.取消首字母自动大写2.跨线设置3.粘附和取消粘附4.对齐5.调整画布大小6.连接线任意位置弯折 总结 1.取消首字母自动大写 文件 -> 选项 -> 校对 -> 自动更正选项 -> 自动更正 -> 句首字母大写 2.跨线设置 选中连接线 设计 -> 连接线 -> 显示…

VISIO使用技巧汇总

0.连接线拐弯或者连接不合适 0-0.Goal ​​​​​​​ 0-1. Automatic connection 0-3.Resolvent 0-3-0.ALTF9选项,取消粘附位置调整 0-3-1.选中线段-选中中心点-shift增加直角调整合适位置

2-visio使用与卸载

目录 部分功能介绍图形拆分去除白边Visio绘制立方体,平行四边形方法不规则图形的绘制,与颜色填充visio导出PDF图,解决字母间距问题、线条变粗问题 卸载方法 部分功能介绍 图形拆分 目标:利用vision绘制一个分裂的圆。 方法:先画…

Visio使用教程

首先,根据自己需求选择自己需要的结构图,也可以新建白图通过图形自己设计 接着新建基本框图 图形生成,在模具形状里找到自己所需要的形状,点击左键不松,拖到绘图区域,松开左键即会形成一个自己所需要的形状…