重学数据结构——链表
相对于线性表的顺序存储结构,不连续的存储结构就是链表了,针对链表,有以下几个注意点:
- 链表的存储空间不一定连续
- 对链表中的节点进行访问与位置有关,时间复杂度为O(n)
- 链表的插入与删除与位置无关,时间复杂度为O(1)
- 链表分为单链表,双向链表,静态链表,循环列表这几种基本形式。
单链表是由许多节点组成的,节点存储结构很简单,分为数据域与指针域。简单可以将其记为:节点=数据+指针,链表=(头节点)+n个节点。
我们还可以单独定义一个头节点,来消除对插入位置的判断,并且头节点中也可以定义一个int型数据,来存储链表的元素的长度。
线性表的操作无论存储结构如何,操作均为相同的,均分为
- 创建链表
- 在位置i插入节点
- 删除位置i节点
- 得到位置i的节点数据
- 销毁链表
与顺序存储结构不同的是,在插入节点时,少了对于存储空间的判断,插入节点分为有头节点和无头节点。
有头节点时,在表头插入元素与表中插入元素操作相同,操作如下:
- 判断插入位置是否合理
- 生成节点
- 找到位置i的前一位节点
- 先连后,后连前
- 表长+1
浙公网安备 33010602011771号