go 标准库 container list


文章目录



list

个双链表(doubly linked list)

如何遍历链表,
其中 l 为 *List :

for e := l.Front(); e != nil; e = e.Next() {
        //链表的每一个元素中通过Next()指针指向下一个元素,直至遍历完成
}

代码:

package main

import (
    "fmt"
    "container/list"
)



func main() {
    
    l := list.New()

    l.PushFront(1)
    l. PushBack(2)
    l. PushBack(3)
    l. PushBack(4)

    // 遍历链表
    for e := l.Front(); e != nil; e = e.Next() {
        fmt.Println(e.Value)
    }

}

执行结果:

1
2
3
4


Element 类型

Element 用于代表双链表的元素

type Element struct {

// 储存在这个元素里面的值
Value interface{}

}

(*Element) Next 方法;

func (e *Element) Next() *Element

返回链表中的下一个元素或者 nil 。

(*Element) Prev 方法

func (e *Element) Prev() *Element

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


List 类型

List 用于表示双链表

空列表可以用作 List 的零值

type List struct {

}

New 函数

func New() *List

返回一个初始化后的链表。


(*List) Back 方法

func (l *List) Back() *Element

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


(*List) Front 方法

func (l *List) Front() *Element

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


(*List) Init 方法

func (l *List) Init() *List

初始化或者清空链表


(*List) InsertAfter 方法

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

将一个包含了值 v 的新元素 e 添加到元素 mark 的后面, 并返回 e 作为结果。

如果 mark 不是链表的元素, 那么不对链表做任何动作。


(*List) InsertBefore 方法

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

将一个包含了值 v 的新元素 e 添加到元素 mark 的前面, 并返回 e 作为结果。

如果 mark 不是链表的元素, 那么不对链表做任何动作。


(*List) Len 方法

func (l *List) Len() int

返回链表包含的元素数量。 该方法的复杂度为 O(1) 。


(*List) MoveAfter 方法

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

将元素 e 移动至元素 mark 之后
如果 e 或者 mark 不是链表的元素, 又或者 e == mark , 那么不对链表做任何动作。


(*List) MoveBefore 方法

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

将元素 e 移动至元素 mark 之前。

如果 e 或者 mark 不是链表的元素, 又或者 e == mark , 那么不对链表做任何动作


(*List) MoveToBack 方法

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

将元素 e 移动到链表的末尾。

如果 e 不是链表的元素, 那么不对链表做任何动作。


(*List) MoveToFront 方法

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

将元素 e 移动到链表的开头。

如果 e 不是链表的元素, 那么不对链表做任何动作。


(*List) PushBack 方法

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

将包含了值 v 的元素 e 插入到链表的末尾并返回 e 。


(*List) PushBackList 方法

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

将链表 other 的副本插入到链表 l 的末尾。 other 和 l 可以是同一个链表。


(*List) PushFront 方法

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

将包含了值 v 的元素 e 插入到链表的开头并返回 e 。


(*List) PushFrontList 方法

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

将链表 other 的副本插入到链表 l 的开头。 other 和 l 可以是同一个链表。


(*List) Remove 方法

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

如果 e 是链表 l 中的元素, 那么移除元素 e

出自:go 标准库 container list

回到顶部