猿问

如何在golang中的列表中构建循环

我编写了一个函数来使用 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)

        }

    }

有人可以帮我吗?


qq_笑_17
浏览 272回答 1
1回答

largeQ

不可能使用容器/列表列表类型构造循环。List 类型方法确保没有循环。因为列表Element的 next 和 previous 指针没有导出,应用程序无法通过直接修改元素来创建循环。您可以定义自己的类型来创建带有循环的列表:package mainimport "fmt"type node struct {&nbsp; &nbsp; v&nbsp; &nbsp; int&nbsp; &nbsp; next *node}func main() {&nbsp; &nbsp; // Create list with 1, 2, 3 and print.&nbsp; &nbsp; l := &node{1, &node{2, &node{3, nil}}}&nbsp; &nbsp; for n := l; n != nil; n = n.next {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(n.v)&nbsp; &nbsp; }&nbsp; &nbsp; // Create list with loop and print at most 100 steps down the list.&nbsp; &nbsp; n3 := &node{3, nil}&nbsp; &nbsp; l = &node{1, &node{2, n3}}&nbsp; &nbsp; n3.next = l&nbsp; &nbsp; for i, n := 0, l; n != nil && i < 100; n, i = n.next, i+1 {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(n.v)&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Go
我要回答