04 |「链表」简析
前言
前言:研究一个数据结构的时候,首先讲的是增删改查。
文章目录
- 前言
- 一、链表简介
- 1. 含义
- 2. 节点组成
- 3. 存储方式
- 1)数据在内存中的存储方式
- 2)单链表在内存中的存储方式
- 3)双链表在内存中的存储方式
- 4)循环链表在内存中的存储方式
- 4. 特点
- 二、链表的操作
- 1. 插入数据
- 1)头部插入
- 2)中间插入
- 3)尾部插入
- 2. 删除数据
- 1)删除头节点
- 2)删除中间节点
- 3)删除尾节点
一、链表简介
1. 含义
- 链:链子。
- 表:数据集合。按照一定顺序排列的元素集合为表。
- 链表的概念:链表中存储的是数据,按照一定顺序排列,每一个数据的前面的数据叫做前驱,后面的数据叫做后继。
2. 节点组成
链表中的每个节点都是由两部分组成。一部分为数据(节点存放的值),另一部分为 地址(下一个节点的地址),节点与节点之间通过指针连接起来。
3. 存储方式
1)数据在内存中的存储方式
-
每个数据在内存中存储都需要占据一块内存空间,任何一块内存空间都有相应的地址。
-
根据元素首地址和数据类型,其中数据类型规定了占据的内存空间的字节大小。
-
通过元素首地址和定义变量的数据类型就可以确定数据所占唯一的内存空间大小,同时找到对应的内存空间,然后从内存空间中读写数据即可。
2)单链表在内存中的存储方式
-
链表区别于数组的存储方式,数组在内存中是集中存放的,链表在内存中是散乱存放的。
-
只要内存中有位置,链表节点就可以存放,节点间通过指针连接。
3)双链表在内存中的存储方式
一个节点内部组成如下图所示。
4)循环链表在内存中的存储方式
4. 特点
-
插入删除数据效率高,读取(查找)数据效率低。
-
查找数据:需要从头结点开始,需要挨个进行判断,效率低。
-
更新数据:需要先查找到数据(查找),从头结点开始依次判断,找到之后替换数据。
二、链表的操作
1. 插入数据
1)头部插入
新节点的 next
指向原链表的头结点,这样新节点就为当前新链表的头结点。
其中 “指向”是一个逻辑概念,怎么用代码实现,通过给 next
指针赋值的方式实现更改指向。
2)中间插入
将要插入的节点的 next
指向后一个节点,前一个节点 next
指向要插入的节点。
3)尾部插入
2. 删除数据
1)删除头节点
直接将头节点删除,第二节点成为头节点。将 Head
指针往后移动一位。
2)删除中间节点
将前一个节点的 next
指向后一个节点。
3)删除尾节点
直接将尾节点的前一个节点的 next
置为 NULL
即可。