列表 list
说明
-
列表是一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间的关系,列表有多种实现方法,例如单链表、双链表
-
在go语言中,将列表使用
container/list
包来实现,内部的实现原理是双链表
单链表
- 每个节点只有一个指向下一个节点的指针
- 只能从前向后遍历
- 占用内存较少
- 适合只需要单向遍历的场景
双链表
-
每个节点有两个指针,分别指向前一个和后一个节点
-
可以双向遍历
-
占用内存较多
-
支持从任意节点双向遍历
-
删除和插入操作更方便
指向 null
的必要性:
- 标记结束点:
null
指针用来表示链表的结束位置,这是一个重要的边界标记 - 避免悬空指针:如果不指向
null
,最后一个节点的指针将指向一个未定义的内存位置,这是非常危险 的 - 便于判断:在遍历链表时,通过检查指针是否为
null
来判断是否到达链表末尾
定义方式
通过 container/list
包的 New
方法初始化 list
变量名 := list.New()
通过声明初始化 list
var 变量名 list.List