Golang 的 列表 元素的移动除了提供了 移到指定元素的前面 和 移到指定元素的后面,还提供了 移到列表的最前面 和移到列表的最后面的操作。
如果要移到最后面的元素本来就在列表的最后面,那么列表不会做任何的改动,或者如果指定元素不是列表中的元素,列表也不会做任何改动。
MoveToBack(e *Element)
参数 | 描述 |
---|---|
e | 要移动的元素。 |
将元素 e 移动到列表的最后面。
将元素 e 移动到列表的最后面
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//将元素 e 移动到列表的最后面
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
element1 := listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Printf("%s ", i.Value)
}
fmt.Println("\n=====================================")
listHaiCoder.MoveToBack(element1)
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Printf("%s ", i.Value)
}
}
程序运行后,控制台输出如下:
我们通过 list.New 创建了一个列表 listHaiCoder,接着使用 PushFront 函数在列表的头部连续插入了三个元素。因为我们使用的是头插法,因此最后插入的元素在最后面。
接着,我们首先 遍历列表 一次,打印出此时列表元素的顺序,接着,使用 MoveToBack 将元素 element1 移动到列表的最后面。
最后,我们再次打印此时列表元素的顺序,发现元素 element1 已经被移动到了列表的最后面。
如果元素本来就在最后面,列表不做任何改变
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//如果元素本来就在最后面,列表不做任何改变
listHaiCoder := list.New()
element := listHaiCoder.PushFront("Hello")
listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Printf("%s ", i.Value)
}
fmt.Println("\n=====================================")
listHaiCoder.MoveToBack(element)
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Printf("%s ", i.Value)
}
}
程序运行后,控制台输出如下:
我们通过 list.New 创建了一个列表 listHaiCoder,接着使用 PushFront 函数在列表的头部连续插入了三个元素。因为我们使用的是头插法,因此最后插入的元素在最后面。
接着,我们首先遍历列表一次,打印出此时列表元素的顺序,接着,使用 MoveToBack 将元素 element 移动到列表的最后面。
因为元素 element 本来就在列表的最后面,所以列表没有做任何的改变。最后,我们再次打印此时列表元素的顺序。
如果元素不是列表的元素,列表不做任何改变
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//如果元素不是列表的元素,列表不做任何改变
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
listHaiCoder.PushFront("嗨客网")
listHaiCoder2 := list.New()
element := listHaiCoder2.PushFront("Hai")
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Printf("%s ", i.Value)
}
fmt.Println("\n=====================================")
listHaiCoder.MoveToBack(element)
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Printf("%s ", i.Value)
}
}
程序运行后,控制台输出如下:
我们通过 list.New 创建了一个列表 listHaiCoder 和一个列表 listHaiCoder2,接着使用 PushFront 函数分别在两个列表的头部插入元素。
接着,我们将列表 listHaiCoder2 的元素 element 插入到列表 listHaiCoder 的最后面,此时列表 listHaiCoder 不会做任何的改变,程序也不会报错。
如果要移到最后面的元素本来就在列表的最后面,那么列表不会做任何的改动,或者如果指定元素不是列表中的元素,列表也不会做任何改动。移到列表最后语法:
MoveToBack(e *Element)