数据结构
??数据结构-第一章 ??抽象数据类型案例 ??数据结构-第二章(1)-线性结构 ??数据结构-第二章(2)-线性表的顺序表示和实现 ??数据结构-第二章(3)-顺序表(含代码) ??数据结构-第二章(4)-顺序表案例(含代码)
链式存储结构
- 用一组任意的存储单元存储线性表的数据元素
- 这组存储单元可以是连续的,也可以是不连续的,甚至是零散的分布在内存的任意位置上的。
- 链表中元素的逻辑次序与物理次序不一定相同
例如: 那怎么表示数据元素之间的逻辑关系呢?
答:可以在存储自己内容的同时也存储下一个元素的地址。存储数据元素的域称为数据域,存储直接后继位置的域称为指针域。指针域中存储的信息称作指针或链。这两部分信息组成ai的存储映象称为结点(Node)。n个结点(ai(1≤i≤n)的存储映象链结成一个链表,即为线性表。把链表中第1个结点的存储位置叫头指针。最后一个元素意味着没有直接后继规定最后一个结点指针为空(通常用NULL或^表示)
与链式存储相关的术语
单链表、双链表、循环链表
- 为了更加方便对链表进行操作,会在单链表的第1个结点前附设一个头结点.头结点的数据域可以不存储任何信息,也可以存储如线性表的长度等附加信息,头结点的指针域存储指向线性表第1个元素的结点。
单链表由头指针唯一确定,因此单链表可用头指针名字来命名。
讨论1:如何表示空表 讨论2:在链表中设置头结点有什么好处?
①有了头结点,对在第一元素结点前插入结点和删除第一结点,其操作与其它结点的操作就统一了 ②便于空表和非空表的统一处理 当链表不设头结点时,假设L为单链表的头指针,它应该指向首元结点,则当单链表为长度n为0的空表时,L指针为空(判定空表的条件可记为:L == NULL)。增加头结点后,无论链表是否为空,头指针都是指向头结点的非空指针。头指针指向头结点。若为空表,则头结点的指针域为空(判定空表的条件可记为:L ->next == NULL) 简述为:
讨论3:头结点的数据域内装的是什么?
链表(链式存储结构)的特点:
小结
总结
期待大家和我交流,留言或者私信,一起学习,一起进步!
|