# container 包

# container/list

# 结构

先看一下结构体由哪些部分组成:

type Element struct {
    next, prev *Element
    list       *List
    Value      any
}
type List struct {
    root Element
    len  int
}

# Element 方法

# 下一个节点

func (e *Element) Next() *Element

# 上一个节点

func (e *Element) Prev() *Element

# List 方法

# 初始化链表

func New() *List

# 链表长度

func (l *List) Len() int

# 链表第一个节点

func (l *List) Front() *Element

# 链表最后一个节点

func (l *List) Back() *Element

# 初始化或清空一个链表

func (l *List) Init() *List

# 指定节点前添加节点

func (l *List) InsertAfter(v any, mark *Element) *Element

若 mark 不属于 l,则链表不修改。

# 指定节点后添加节点

func (l *List) InsertBefore(v any, mark *Element) *Element

若 mark 不属于 l,则链表不修改。

# 链表末尾添加节点

func (l *List) PushBack(v any) *Element

# 链表开头添加节点

func (l *List) PushFront(other *List)

# 删除节点

func (l *List) Remove(e *Element) any

# 把指定节点移动到指定节点之后

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

若 e 或 mark 不属于 l,则链表不修改。

# 把指定节点移动到指定节点之前

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

若 e 或 mark 不属于 l,则链表不修改。

# 把指定节点移动到链表末尾

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

# 把指定节点移动到链表开头

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

# 把指定节点移动到链表末尾

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

# 把指定节点移动到链表开头

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

# 结尾追加链表

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

# 开头加入链表

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