一、定义
1.概念:
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。
即:只要是内存中未被占用的位置那么数据元素就可以存储。
2.链式结构中除了存储数据元素信息之外,还要存储它的后继元素(直接后继元素)的存储地址,结点就是指针域加数据域。
3.链表中第一个结点(如果有头结点那么头结点就是第一个结点)的存储位置叫做头指针。
就算链表为空,头指针也不为空。
最后一个结点指针为空/NULL。
4.一般会在单链表的第一个结点前面附设一个结点,称为头结点。(非链表必要元素只是为了方便操作第一个结点)
头结点的数据域可以不存储任何信息,也可以存储诸如线性表的长度等信息。
二、链式存储结构代码描述
*LinkList表示它是Node类型的一级结构体指针,后续主函数中会有 LinkList L;这里的L就是二级指针。只有二级指针才能真正进行改动链表。
*next代表它是结构体Node中next的指针,指向结构体中存储下一个结点地址的地方,这个地方叫next。
因为前面有Struct Node,所以next本来也是结构体Node里的一个变量。
(*L)->next是用二级指针去改动Node的next域里的值。
因为初始化链式线性表之要创造一个头结点没有下一个结点所以赋值NUll
只要查看不改动,所以一级指针就够了。
接下来注释都写在代码中啦
**************************************************************************************************************
到这里,我们从三个方面总结单链表结构和顺序存储结构做对比:
存储分配方式:
顺序存储结构用一段连续存储单元一次存储线性表的数据元素。
单链表采用链式存储结构,用任意一组存储单元存放线性表的元素。
时间性能:
查找:顺序表O(1)
单链表O(n)
插入和删除:顺序存储结构需要平均移动表长一半的元素,时间复杂度为O(n)
单链表在找出位置的指针后,插入和删除元素时间复杂度仅为O(1)
空间性能:
顺序存储结构需要预分配存储空间,分大浪费,分小上溢。
单链表只要内存中有空间就可以分配,元素个数也不受限制。
总结:
若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。
反之,元素个数多或者根本不知道有多大,最好采用单链表结构。
---------------------------------------------------------------------------------------------------------------------------------
点赞和收藏、关注、打赏是我更新的动力~
如有解释不妥之处欢迎指出。