关于线性表计顺序存储可看上篇文章:数据结构-线性表-顺序存储-CSDN博客
线性表的链接存储
链接方式存储的线性表简称为链表LinkList,链表的具体存储表示为:用一组任意的存储单元来存放;链表中结点的逻辑次序和物理次序不一定相同。还必须存储指示其后继结点的地址信息。
链表分类
单链表
单链表的构成:data域,next域
- data域:存放结点值的数据域
- next域:存储结点的直接后继的地址的指针域
- 结点通过指针链接而组成单链表,NULL称为空指针,Head称为头指针变量,存放链表中的第一个结点地址
- 单链表中的第一个结点内一般不存数据,称为头结点,利用头指针存放该结点地址,加设头结点为了方便运算
- head是链表的头指针,head内存放的是头结点的地址。 第一个元素结点:head→next
- 非空单链表和空单链表示例
- 单头结点非空单链表和空单链表示例
链表的基本运算
链表初始化
链表长度
链表读取元素
链表数据定位
链表的插入运算
链表的删除运算
循环链表
双向循环链表
顺序表和链表比较
单链表的每个结点包括数据域和指针域,指针域需要占用额外空间。
从整体考虑。顺序表要预分配存储空间,如果预先分配得过大,将造成浪费,若分配得过小,又将发生上溢;单链表不需要预先预分配空间,只要内存空间没有耗尽,单链表中的结点个数就没有限制。
顺序表和链表的时间性能比较
顺序表:读取元素:O(1);定位(找x): O(n);插入: O(n);删除: O(n);表长度: O(1)
链表:读取元素:O(n);定位(找x): O(n);插入: O(n);删除: O(n);表长度: O(n)