容器数据结构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{}
示例
包文件
包文件
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 。