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 list

import "container/list"

list包实现了双向链表。要遍历一个链表:

for e := l.Front(); e != nil; e = e.Next() {
	// do something with e.Value
}
Example
// Create a new list and put some numbers in it.
l := list.New()
e4 := l.PushBack(4)
e1 := l.PushFront(1)
l.InsertBefore(3, e4)
l.InsertAfter(2, e1)
// Iterate through list and print its contents.
for e := l.Front(); e != nil; e = e.Next() {
    fmt.Println(e.Value)
}

Output:

1
2
3
4

Go语言标准库 >>


  • type Element
  • type List
  • Examples

    Go语言标准库 >>


  • package
  • type Element

    type Element struct {
        // 元素保管的值
        Value interface{}
        // 内含隐藏或非导出字段
    }

    Element类型代表是双向链表的一个元素。

    func (*Element) Next

    func (e *Element) Next() *Element

    Next返回链表的后一个元素或者nil。

    func (*Element) Prev

    func (e *Element) Prev() *Element

    Prev返回链表的前一个元素或者nil。

    type List

    type List struct {
        // 内含隐藏或非导出字段
    }

    List代表一个双向链表。List零值为一个空的、可用的链表。

    func New

    func New() *List

    New创建一个链表。

    func (*List) Init

    func (l *List) Init() *List

    Init清空链表。

    func (*List) Len

    func (l *List) Len() int

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

    func (*List) Front

    func (l *List) Front() *Element

    Front返回链表第一个元素或nil。

    func (*List) Back

    func (l *List) Back() *Element

    Back返回链表最后一个元素或nil。

    func (*List) PushFront

    func (l *List) PushFront(v interface{}) *Element

    PushFront将一个值为v的新元素插入链表的第一个位置,返回生成的新元素。

    func (*List) PushFrontList

    func (l *List) PushFrontList(other *List)

    PushFrontList创建链表other的拷贝,并将拷贝的最后一个位置连接到链表l的第一个位置。

    func (*List) PushBack

    func (l *List) PushBack(v interface{}) *Element

    PushBack将一个值为v的新元素插入链表的最后一个位置,返回生成的新元素。

    func (*List) PushBackList

    func (l *List) PushBackList(other *List)

    PushBack创建链表other的拷贝,并将链表l的最后一个位置连接到拷贝的第一个位置。

    func (*List) InsertBefore

    func (l *List) InsertBefore(v interface{}, mark *Element) *Element

    InsertBefore将一个值为v的新元素插入到mark前面,并返回生成的新元素。如果mark不是l的元素,l不会被修改。

    func (*List) InsertAfter

    func (l *List) InsertAfter(v interface{}, mark *Element) *Element

    InsertAfter将一个值为v的新元素插入到mark后面,并返回新生成的元素。如果mark不是l的元素,l不会被修改。

    func (*List) MoveToFront

    func (l *List) MoveToFront(e *Element)

    MoveToFront将元素e移动到链表的第一个位置,如果e不是l的元素,l不会被修改。

    func (*List) MoveToBack

    func (l *List) MoveToBack(e *Element)

    MoveToBack将元素e移动到链表的最后一个位置,如果e不是l的元素,l不会被修改。

    func (*List) MoveBefore

    func (l *List) MoveBefore(e, mark *Element)

    MoveBefore将元素e移动到mark的前面。如果e或mark不是l的元素,或者e==mark,l不会被修改。

    func (*List) MoveAfter

    func (l *List) MoveAfter(e, mark *Element)

    MoveAfter将元素e移动到mark的后面。如果e或mark不是l的元素,或者e==mark,l不会被修改。

    func (*List) Remove

    func (l *List) Remove(e *Element) interface{}

    Remove删除链表中的元素e,并返回e.Value。