我编写了一个函数来使用 golang 在列表中查找循环。但我无法在列表中构建一个循环作为输入。请在代码下方找到,package main import ( "container/list" "fmt" ) func main() { l := list.New() l.PushBack(0) l.PushBack(1) l.PushBack(2) l.PushBack(3) l.PushBack(4) l.PushBack(5) e6 := l.PushBack(6) l.PushBack(7) e8 :=l.PushBack(8) e9 := l.InsertAfter(9,e8) l.InsertBefore(e9, e6) for e:=l.Front() ; e !=nil ; e=e.Next() { fmt.Println(e.Value) } }有人可以帮我吗?
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
不可能使用容器/列表列表类型构造循环。List 类型方法确保没有循环。因为列表Element的 next 和 previous 指针没有导出,应用程序无法通过直接修改元素来创建循环。
您可以定义自己的类型来创建带有循环的列表:
package main
import "fmt"
type node struct {
v int
next *node
}
func main() {
// Create list with 1, 2, 3 and print.
l := &node{1, &node{2, &node{3, nil}}}
for n := l; n != nil; n = n.next {
fmt.Println(n.v)
}
// Create list with loop and print at most 100 steps down the list.
n3 := &node{3, nil}
l = &node{1, &node{2, n3}}
n3.next = l
for i, n := 0, l; n != nil && i < 100; n, i = n.next, i+1 {
fmt.Println(n.v)
}
}
- 1 回答
- 0 关注
- 271 浏览
添加回答
举报
0/150
提交
取消