一、链表理论基础
1.1链表的定义
链表就是由指针串联在一起的线性结构。链表的结点组成为:
- 数据域
data
- 指针域
next
链表的入口节点就是链表的头结点 head
1.2链表的类型
- 单链表长这个样:
- 双链表长这个样:
双链表的每一个节点有两个指针域,一个数据域:
prev
(指向上一个节点)next
(指向下一个节点)data
(存储数据)
双链表 既可以向前查询也可以向后查询。
循环链表就是链表首尾相连,可以用来解决约瑟夫环问题。
1.3链表的存储方式
数组在内存中是连续分布的,但是链表在内存中是不可连续分布的,链表是通过指针域的指针连接在内存中的各个节点。链表中的节点散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。
上图可知,各个节点分布在内存不同的地址空间,通过指针串联在一起了。
二、链表的操作
2.1删除节点
c->next=D->next;
2.2添加节点
f->next=D; c->next=f;
三、性能分析:
链表和数组特性分析如下: