为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
qq_笑_17 2021-09-10 21:31:09
我编写了一个函数来使用 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)

    }


}


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 271 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信