Go语言列表list元素移动

Go语言列表list元素移动教程

Golang列表 元素的移动有两种情景,分别为:将 指定元素移动到另一元素的前面 和将指定元素移动到另一元素的后面 。

如果将指定元素移动到另一元素的后面中的指定元素本来就在另一元素的后面,那么列表不会做任何的改动,或者如果指定元素不是列表中的元素,列表也不会做任何改动。

移到元素后

语法

MoveAfter(e, mark *Element)

参数

参数 描述
e 要移动的元素。
mark 移动元素的基准元素。

说明

将元素 e 移动到元素 mark 的后面。

案例

移到元素后

将元素 e 移动到元素 mark 的后面

package main import ( "container/list" "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //将元素 e 移动到元素 mark 的后面 listHaiCoder := list.New() listHaiCoder.PushFront("Hello") element1 := listHaiCoder.PushFront("HaiCoder") element2 := listHaiCoder.PushFront("嗨客网") for i := listHaiCoder.Back(); i != nil; i = i.Prev() { fmt.Printf("%s ", i.Value) } fmt.Println("\n=====================================") listHaiCoder.MoveAfter(element2, element1) for i := listHaiCoder.Back(); i != nil; i = i.Prev() { fmt.Printf("%s ", i.Value) } }

程序运行后,控制台输出如下:

109 golang列表元素移动.png

我们通过 list.New 创建了一个列表 listHaiCoder,接着使用 PushFront 函数在列表的头部连续插入了三个元素。因为我们使用的是头插法,因此最后插入的元素在最前面。

接着,我们首先 遍历列表 一次,打印出此时列表元素的顺序,接着,使用 MoveAfter 将元素 element2 移动到元素 element1 的后面。

最后,我们再次打印此时列表元素的顺序,发现元素 element2 已经移动到了 element1 元素的后面。

元素本来就在后

如果元素本来就在后面,列表不做任何改变

package main import ( "container/list" "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //如果元素本来就在后面,列表不做任何改变 listHaiCoder := list.New() listHaiCoder.PushFront("Hello") element1 := listHaiCoder.PushFront("HaiCoder") element2 := listHaiCoder.PushFront("嗨客网") for i := listHaiCoder.Back(); i != nil; i = i.Prev() { fmt.Printf("%s ", i.Value) } fmt.Println("\n=====================================") listHaiCoder.MoveAfter(element1, element2) for i := listHaiCoder.Back(); i != nil; i = i.Prev() { fmt.Printf("%s ", i.Value) } }

程序运行后,控制台输出如下:

110 golang列表元素移动.png

我们通过 list.New 创建了一个列表 listHaiCoder,接着使用 PushFront 函数在列表的头部连续插入了三个元素。因为我们使用的是头插法,因此最后插入的元素在最前面。

接着,我们首先遍历列表一次,打印出此时列表元素的顺序,接着,使用 MoveAfter 将元素 element1 移动到元素 element2 的后面。

因为元素 element1 本来就在元素 element2 的后面,所以列表没有做任何的改变。最后,我们再次打印此时列表元素的顺序。

元素不是列表的元素

如果元素不是列表的元素,列表不做任何改变

package main import ( "container/list" "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //如果元素不是列表的元素,列表不做任何改变 listHaiCoder := list.New() listHaiCoder.PushFront("Hello") element := listHaiCoder.PushFront("嗨客网") listHaiCoder2 := list.New() element1 := listHaiCoder2.PushFront("Hai") for i := listHaiCoder.Back(); i != nil; i = i.Prev() { fmt.Printf("%s ", i.Value) } fmt.Println("\n=====================================") listHaiCoder.MoveAfter(element, element1) for i := listHaiCoder.Back(); i != nil; i = i.Prev() { fmt.Printf("%s ", i.Value) } }

程序运行后,控制台输出如下:

111 golang列表元素移动.png

我们通过 list.New 创建了一个列表 listHaiCoder 和一个列表 listHaiCoder2,接着使用 PushFront 函数分别在两个列表的头部插入元素。

接着,我们将列表 listHaiCoder2 的元素 element1 插入到列表 listHaiCoder 中,此时列表 listHaiCoder 不会做任何的改变,程序也不会报错。

Go语言列表list元素移动总结

如果将指定元素移动到另一元素的后面中的指定元素本来就在另一元素的后面,那么列表不会做任何的改动,或者如果指定元素不是列表中的元素,列表也不会做任何改动。移到元素后语法:

MoveAfter(e, mark *Element)