-
前言:
go语言提供了两种链表,双向链表和环形链表,单向链表是双向链表的一种;链表适合快速增删而不适合快速查询;本文详细介绍环形链表
-
标准库:container/ring
-
结构
type Ring struct {
next, prev *Ring // next 当前元素的下一个元素,prev则是上一个元素
Value interface{} // 供调用者使用,本包不会操作该字段
}
环形链表的元素由一个或多个Ring结构体组成,每一个代表环形链表的一个元素,但它同时也代表链表本身。环形链表没有头尾;指向环形链表任一元素的指针都可以作为整个环形链表看待。由此可以看出,环形链表没有实体,多个元素组合在一起就是一个环形链表,每一个元素成员都可以代表环形链表。下面看例子:
创建环形链表
func New(n int) *Ring // 创建一个有n个元素的环形链表,返回一个元素指针
创建一个环形链表并打印: