Golang 的 列表 的遍历分为正序遍历和倒叙遍历,正序遍历就是从链表的头元素遍历到尾元素,倒叙遍历就是从链表的尾元素遍历到链表的头元素。
Go 语言链表的正序遍历是使用 for 循环 加上 list 内置的 Front 函数和 Next 函数来实现。列表的 Front 函数返回的是列表的头元素,Next 是实现列表的指针后移,for 循环的结束条件是列表的节点为 nil。
Go 语言链表的倒序遍历是使用 for 循环加上 list 内置的 Back 函数和 Prev 函数来实现。列表的 Back 函数返回的是列表的尾元素,Prev 是实现列表的指针前移,for 循环的结束条件是列表的节点为 nil。
for i := lis.Front(); i != nil; i = lis.Next() {
fmt.Println(i.Value)
}
从链表头遍历到链表尾,并打印列表中每个元素的值,链表的 Value 是节点元素对应的值。
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Println(i.Value)
}
从链表尾遍历到链表头,并打印列表中每个元素的值。
正序遍历列表,并打印列表的每一个元素
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//正序遍历列表,并打印列表的每一个元素
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
for i := listHaiCoder.Front(); i != nil; i = i.Next() {
fmt.Println("Element =", i.Value)
}
}
程序运行后,控制台输出如下:
我们通过 list.New 创建了一个列表 listHaiCoder,接着使用 PushFront 函数在列表中插入三个元素。
在遍历列表时,首先使用 Front() 函数获取列表的头元素,接着每次循环使用 Next() 函数将指针后移一位,for 循环结束的条件是链表的节点为 nil。
倒叙遍历列表,并打印列表的每一个元素
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//倒叙遍历列表,并打印列表的每一个元素
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Println("Element =", i.Value)
}
}
程序运行后,控制台输出如下:
我们通过 list.New 创建了一个列表 listHaiCoder,接着使用 PushFront 函数在列表中插入三个元素。
在遍历列表时,首先使用 Back() 函数获取列表的尾元素,接着每次循环使用 Prev() 函数将指针前移一位,for循环结束的条件是链表的节点为 nil。
Golang 的列表的遍历分为正序遍历和倒叙遍历,正序遍历就是从链表的头元素遍历到尾元素,倒叙遍历就是从链表的尾元素遍历到链表的头元素。Go 语言列表正序遍历语法:
for i := lis.Front(); i != nil; i = lis.Next() {
fmt.Println(i.Value)
}
Go 语言列表倒叙遍历语法:
for i := listHaiCoder.Back(); i != nil; i = i.Prev() {
fmt.Println(i.Value)
}