Go 语言

Go 语言教程 Go 语言环境安装 Go 语言结构 Go 语言基础语法 Go 语言数据类型 Go 语言变量 Go 语言常量 Go 语言运算符 Go 语言条件语句 Go 语言 if 语句 Go 语言 if...else 语句 Go 语言 if 语句嵌套 Go 语言 switch 语句 Go 语言 select 语句 Go 语言循环语句 Go 语言 for 循环 Go 语言循环嵌套 Go 语言 break 语句 Go 语言 continue 语句 Go 语言 goto 语句 Go 语言函数 Go 语言函数值传递值 Go 语言函数引用传递值 Go 语言函数作为值 Go 语言函数闭包 Go 语言函数方法 Go 语言变量作用域 Go 语言数组 Go 语言多维数组 Go 语言向函数传递数组 Go 语言指针 Go 语言指针数组 Go 语言指向指针的指针 Go 语言指针作为函数参数 Go 语言结构体 Go 语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言递归函数 Go 语言类型转换 Go 语言接口 Go 错误处理 Go 语言开发工具Go 语言标准库

Go 语言标准库


package ring

import "container/ring"

ring实现了环形链表的操作。

Go语言标准库 >>


  • type Ring
  • type Ring

    type Ring struct {
        Value interface{} // 供调用者使用,本包不会操作该字段
        // 包含隐藏或非导出字段
    }

    Ring类型代表环形链表的一个元素,同时也代表链表本身。环形链表没有头尾;指向环形链表任一元素的指针都可以作为整个环形链表看待。Ring零值是具有一个(Value字段为nil的)元素的链表。

    func New

    func New(n int) *Ring

    New创建一个具有n个元素的环形链表。

    func (*Ring) Len

    func (r *Ring) Len() int

    Len返回环形链表中的元素个数,复杂度O(n)。

    func (*Ring) Next

    func (r *Ring) Next() *Ring

    返回后一个元素,r不能为空。

    func (*Ring) Prev

    func (r *Ring) Prev() *Ring

    返回前一个元素,r不能为空。

    func (*Ring) Move

    func (r *Ring) Move(n int) *Ring

    返回移动n个位置(n>=0向前移动,n<0向后移动)后的元素,r不能为空。

    func (r *Ring) Link(s *Ring) *Ring

    Link连接r和s,并返回r原本的后继元素r.Next()。r不能为空。

    如果r和s指向同一个环形链表,则会删除掉r和s之间的元素,删掉的元素构成一个子链表,返回指向该子链表的指针(r的原后继元素);如果没有删除元素,则仍然返回r的原后继元素,而不是nil。如果r和s指向不同的链表,将创建一个单独的链表,将s指向的链表插入r后面,返回s原最后一个元素后面的元素(即r的原后继元素)。

    func (r *Ring) Unlink(n int) *Ring

    删除链表中n % r.Len()个元素,从r.Next()开始删除。如果n % r.Len() == 0,不修改r。返回删除的元素构成的链表,r不能为空。

    func (*Ring) Do

    func (r *Ring) Do(f func(interface{}))

    对链表的每一个元素都执行f(正向顺序),注意如果f改变了*r,Do的行为是未定义的。