初始化一个列表,返回类型为一个list对象
a := list.New() # 在函数内部
a = list.New()
输出:
&{{0xc00006a300 0xc00006a300 } 0}
返回链表的最后一个元素,返回类型元列表中的元素。
x := a.Back()
fmt.Println(strings.Repeat("-----------", 10))
fmt.Println(x)
&{0xc00006a300 0xc00006a330 0xc00006a300 b}
返回链表的第一个元素,返回类型元列表中的元素。
x := a.Front()
fmt.Println(strings.Repeat("-----------", 10))
fmt.Println(x)
&{0xc00006a360 0xc00006a300 0xc00006a300 a}
初始化此链表,将元素全部清空
m := a.Init()
fmt.Println(m)
输出:
&{{0xc00006a300 0xc00006a300 } 0}
InsertAfter在mark之后立即插入一个值为v的新元素e并返回e。如果mark不是l的元素,则不修改列表。商标不得为零。
b := a.PushBack("b")
fmt.Println(a.InsertAfter("mm", b))
fmt.Println(a)
&{0xc000068300 0xc000068360 0xc000068300 mm}
&{{0xc000068300 0xc000068480 } 1}
b := a.PushBack("b")
fmt.Println(a.InsertBefore("mm", b))
fmt.Println(a)
&{0xc000068300 0xc000068360 0xc000068300 mm}
&{{0xc000068300 0xc000068480 } 1}
返回链表的长度,返回值类型为×××
fmt.Println(a.Len())
1
MoveAfter将标记后的元素e移动到新位置。如果e或mark不是l或e == mark的元素,则不修改列表。元素和标记不得为零。
MoveBefore将元素e移动到标记前的新位置。如果e或mark不是l或e == mark的元素,则不修改列表。元素和标记不得为零。
MoveToBack将元素e移动到列表l的后面。如果e不是l的元素,则不修改列表。元素不能为零。
MoveToFront将元素e移动到列表l的前面。如果e不是l的元素,则不修改列表。元素不能为零。
PushBack在列表l的后面插入一个值为v的新元素e并返回e。
a.PushBack("a")
b := a.PushBack("b")
PushBackList在列表l的后面插入另一个列表的副本。列表l和其他可以是相同的。他们一定不能为零。
PushFront在列表l的前面插入一个值为v的新元素e并返回e。
PushFrontList在列表l的前面插入另一个列表的副本。列表l和其他可以是相同的。他们一定不能为零。
如果e是列表l的元素,则删除从l中删除e。它返回元素值e.Value。元素不能为零。
Next返回下一个list元素或nil
Prev返回前一个列表元素或nil。
x := a.Front()
fmt.Println(x.Value)
for e := a.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
输出:
3
a
b
mm
链表适合于频繁存取的数据结构中。
切片适合于频繁查询的数据结构中。