
本文数据结构讲解参考书目:
通过网盘分享的文件:数据结构 C语言版.pdf
链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwd=ze8e 提取码: ze8e
上一节我讲了线性表中顺序表的定义以及常用的算法,那么这节我将继续讲解顺序表中的链式结构以及常见的算法。
目录
线性表的链式表示和实现
1.单链表的定义和表示
线性表链式存储结构的特点是:用一 组任意的存储单元存储线性表的数据元素(这组存储单
元可以是连续的,也可以是不连续的)。 因此,为了表示每个数据元素ai与其直接后继数据元素
ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直
接后继的信息(即直接后继的存储位置)。 这两部分信息组成数据元素ai的存储映像,称为结点。
它包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存储位置的域称
为指针域。指针域中存储的信息称作指针或链。n个结点(a,(1<=i<=n) 的存储映像)链结成一
个链表,即为线性表。
(a1, a2;··, an)
根据链表结点所含指针个数、指针指向和指针连接方式,可将链表分为单链表、循环链表、
双向链表、二叉链表、十字链表、邻接表、邻接多重表等。其中单链表、循环链表和双向链表用
千实现线性表的链式存储结构,其他形式多用于实现树和图等非线性结构。
2.单链表的逻辑状态

由上述可见,单链表可由 头指针唯一确定,在C语言中可用 “结构指针” 来描述。
注:(1)这里定义的是单链表中每个结点的 存储结构,它包括两部分:存储结点的数据
域 data, 其类型 用通用类型标识符 ElemType 表示;存储后继结点位置
的指针域 next, 其类型为指向结点的指针类型 LNode *。
(2) 为了提高程序的可读性,在此对同一结构体指针类型起了两个名称,LinkList 与
LNode* , 两者本质上是等价的。通常习惯上 用 LinkList 定义单链表,强调定义的是某个单链
喊' 表的头指针;用 LNode *定义指向单链表中任意结点的指针变量。例如,若定义 LinkList L,
惩明 则 L 为单链表的头指针,若定义 LNode*p, 则p 为指向单链表中某个结点的指针,用*p 代表
该结点。当然也可以使用定义 LinkListp, 这种定义形式完全等价于 LNode*p。
(3) 单链表是由表头指针唯一确定,因此 单链表可以用头指针 的名宇来命名。若头
指针名是L, 则简称该链表为 表L。
(4) 注意区分指针变量和结点变量两个 不同的概念,若定义 LinkListp 或 LNode*p,
则 p 为指向某 结点的指针变量,表示该结点的地址;而*p 为对应的结点变量,表示该结
点的名称。
一般情况下,为了处理方便,在单链表的第一个结点之前附设一个结点,称之为头结点

最低0.47元/天 解锁文章
——线性表之单链表专项练习&spm=1001.2101.3001.5002&articleId=142024254&d=1&t=3&u=099fd462af854854bb1c66fcf0a53d19)

被折叠的 条评论
为什么被折叠?



