混子数据结构学习之第二章线性表链式存储
"磨棱角,褪优越,沉下心"
"不止于心动,更付诸于行动,执行力!“
前言
坚持学习记录,本章开始记录链式存储结构,我觉得是最核心的,涉及到指针相关的知识。争取2021年结束前能够把链式表相关的内容记录输出完成,只能利用下班之余进行学习补充。 废话不多,开始写把吧,一样的,这章主要记录一下一些概念和基础知识,后面再分开详细记录和实战。
链式存储结构
概念特点:
结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
链式表示又称为非顺序映像或链式映像。
用一组物理位置任意的存储单元来存放线性表的数据元素。这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。链表中元素的逻辑次序和物理次序不一定相同。
例子理解
视频讲解截图

备注:
上述的例子都列举了如何存储的,如何去找到元素的,就是包含两部分内容,一个元素在储存自己的同时,将会存储它下一个元素的地址。
基本概念术语
-
结点
数据元素的存储映象,即两部分组成,数据域+指针域。 -
链表
由若干个结点组成,由指针链连接的表。 -
单链表(线性链表)
结点只有一个指针域的链表(指针域存储后继元素的地址)。 -
双链表
结点有两个指针域的链表(指针域存储前驱元素的地址和后继元素的地址)。 -
循环链表
首尾相连的链表,就是单链表的最后一个元素指针域存储了头结点的地址或者首元结点的地址。 -
头指针、头结点、首元结点
-
设置头结点的好处
- 1、便于首元结点的处理:首元结点的地址保存在头结点的指针域中,所以在链表的第一个位置上的操作和其他位置一致,无须进行特殊处理。
- 2、便于空表和非空表的统一处理:无论链表是否为空,头指针都是指向头结点的非空指针,因此空表和非空表的处理也就统一了。
需要注意头结点
头结点和其他一般的结点一样,有两部分构成,数据域可存储表长度等其他信息,但是在统计链表长度时,头结点不算进去!
链表结构的特点
- 1、结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
- 2、访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不等。
存取元素的方法被称为顺序存取法,不同于顺序表是随机存取。
小结
本篇主要记录了数据结构的链表的基本概念和术语,方便后续学习知道对应的意思,不必死记硬背,和顺序表不同的是链表多了一个地址域来存储下一个元素的地址,还是很好理解的。内容不是太多,大概回顾一下!
睡觉了,明天有时间继续下一篇撸代码实例学习!
参考资料:
青岛大学.王卓.数据结构与算法
《数据结构 C语言版》.严蔚敏
《大话数据结构》.程杰
欢迎关注本人微信公众号:那个混子
记录自己学习的过程,分享乐趣、技术、想法、感悟、情感!
单片机类嵌入式交流学习可加企鹅群:120653336