-----------------------------------------------------------------------------------------------------------------------------
前言:
感觉自己总是不太会做笔记,每一次一开始做笔记还好好地,越到后面就是一顿上课听课的截图,然后就渐渐的不想做笔记了,感觉这个习惯也不太好,所以我得认认真真的做好每一篇笔记!
-----------------------------------------------------------------------------------------------------------------------------
回顾顺序表的相关知识:
特点:以物理位置相邻表示逻辑关系
优点:任一元素均可随机存取
缺点:进行插入和删除操作时,需移动大量的元素。存储空间不灵活
***********************************************************************************************************
一、线性表的链式表示和实现
1、链式存储结构:
结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
线性表的链式表示又称为非顺序映像或链式映像。
用一组物理位置任意的存储单元来存放线性表的数据元素。
这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。
链表中元素的逻辑次序和物理次序不一定相同。
例如1:
如上图右边的链表所示:
结点是由数据域(存储的数据)和指针域(直接后继结点的地址)组成的。
存储的地址也叫指针或者链(如上表所示)。
头指针用来记录第一个元素的地址
如果头指针的名字为H,那么单链表的命名就是单链表H。
例如2:
解释:我们可以通过头指针找到第一个元素的地址,以此类推找到后面所有的元素。如最后元素是z,z后面没有其他元素的,所以指向的是一个空值(NULL),符号:^
2、与链式存储有关的术语
(1)结点
数据元素的存储映像。由数据域和指针域两部分组成
(2)链表
n个结点由指针链组成一个链表
它是线性表的链式存储映像,称为线性表的链式存储结构
将线性表映射到物理内存中,只不过这样的映射不是连续的。
3、单链表、双链表、循环链表
在循环链表中,最后一个元素存储的地址是:头结点的地址
4、头指针、头结点、首元结点
如何表示空表,用一句话来概括就是:头指针为空或者头结点的指针域为空
5、链表(链式存储结构)的特点
(1)结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻
(2)访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不等。 (这种存取元素的方法被称为顺序存取法,所以说链表是顺序存取的,而前面讲到的顺序表是随机存取的)
二、单链表的定义
知识回顾:
1、单链表的定义与表示
struct表示是结构类型
ElemType 元素类型,类型是data
*next表示是一个指针
typedef表示是将这个结构类型重新起了一个名字:
三、单链表的基本操作——初始化和判断空表