容器数据结构list | container/list

Package list

  • import "container/list"

  • 概况

  • 索引

  • 例子

概述

软件包列表实现双向链接列表。

遍历一个列表(其中 l 是 *List):

for e := l.Front( e != nil; e = e.Next() { // 用e.Value做些事情 }

示例

package main import ( "container/list" "fmt" ) func main() { // 创建一个新列表并在其中添加一些数字。 l := list.New() e4 := l.PushBack(4) e1 := l.PushFront(1) l.InsertBefore(3, e4) l.InsertAfter(2, e1) // 遍历列表并打印其内容。 for e := l.Front( e != nil; e = e.Next() { fmt.Println(e.Value) } }

索引

type Element

  • func (e *Element) Next() *Element

  • func (e *Element) Prev() *Element

type List

  • func New() *List

  • func (l *List) Back() *Element

  • func (l *List) Front() *Element

  • func (l *List) Init() *List

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

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

  • func (l *List) Len() int

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

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

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

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

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

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

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

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

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

示例

包文件

包文件

list.go

type Element(查看源代码)

元素是链接列表的元素。

type Element struct { // 与此元素一起存储的值。 Value interface{} // 包含过滤或未导出的字段 }

func (*Element) Next(查看源代码)

func (e *Element) Next() *Element

接下来返回下一个列表元素或空值 nil 。

func (*Element) Prev(查看源代码)

func (e *Element) Prev() *Element

Prev 返回前一个列表元素或 空值nil 。

type List(查看源代码)

列表代表一个双向链表。列表的零值是准备使用的空列表。

type List struct { // 包含过滤或未导出的字段 }

func New(查看源代码)

func New() *List

重新返回一个初始化列表。

func (*List) Back(查看源代码)

func (l *List) Back() *Element

返回列表的最后一个元素或空值 nil。

func (*List) Front(查看源代码)

func (l *List) Front() *Element

Front 返回列表的第一个元素或空值nil 。

func (*List) Init(查看源代码)

func (l *List) Init() *List

Init 初始化或清除列表 l 。

func (*List) InsertAfter(查看源代码)

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

InsertAfter 在标记后立即插入具有值 v 的新元素 e 并返回 e。如果标记不是 l 的元素,则列表不会被修改。

func (*List) InsertBefore(查看源代码)

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

InsertBefore 在标记之前立即插入一个具有值 v 的新元素 e 并返回 e 。如果标记不是 l 的元素,则列表不会被修改。

func (*List) Len(查看源代码)

func (l *List) Len() int

Len 返回列表 l 的元素数量。复杂性是 O(1)。

func (*List) MoveAfter(查看源代码)

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

MoveAfter 将元素 e 移动到标记后的新位置。如果 e 或标记不是 l 或 e ==标记的元素,则列表不会被修改。

func (*List) MoveBefore(查看源代码)

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

MoveBefore 在标记之前将元素 e 移动到新的位置。如果 e 或标记不是 l 或 e ==标记的元素,则列表不会被修改。

func (*List) MoveToBack(查看源代码)

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

MoveToBack 将元素 e 移动到列表l的后面。如果 e 不是 l 的元素,则列表不会被修改。

func (*List) MoveToFront(查看源代码)

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

MoveToFront 将元素 e 移动到列表l的前面。如果 e 不是 l 的元素,则列表不会被修改。

func (*List) PushBack(查看源代码)

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

PushBack 在列表 l 的后面插入一个新值 e 的元素 e 并返回 e 。

func (*List) PushBackList(查看源代码)

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

PushBackList 在列表 l 的后面插入其他列表的副本。列表 l 和其他可能是相同的。

func (*List) PushFront(查看源代码)

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

PushFront 在列表 l 的前面插入一个新的元素 e,其值为 v,并返回 e 。

func (*List) PushFrontList(查看源代码)

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

PushFrontList 在列表 l 的前面插入其他列表的副本。列表 l 和其他可能是相同的。

func (*List) Remove(查看源代码)

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

如果 e 是列表 l 的一个元素,则删除从 e 删除 e 。它返回元素值 e.Value 。