我是 Go 的新手,正在尝试实现一个非常简单的链表。目前,在递归遍历列表时,如果 node.next 为 nil/unset,我试图跳出 for 循环,但 if 条件永远不会满足。我只能假设该值不是 nil,而是某种指向空 Node 结构类型的指针,但我不知道如何评估它。这是我的代码,任何帮助将不胜感激:package mainimport "fmt"type Node struct { data string next *Node}func PrintList(node *Node) { for { fmt.Println(node.data) if node.data == nil { break } else { PrintList(node.next) } }}func main() { node3 := &Node{data: "three"} node2 := &Node{data: "two", next: node3} node1 := &Node{data: "one", next: node2} PrintList(node1)}
1 回答
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
修正你的错字:node.next == nilnot node.data == nil。并修复您的递归错误:删除for循环。更好的是,为了安全,请检查node == nil. 例如,
package main
import "fmt"
type Node struct {
data string
next *Node
}
func PrintList(node *Node) {
if node == nil {
return
}
fmt.Println(node.data)
PrintList(node.next)
}
func main() {
node3 := &Node{data: "three"}
node2 := &Node{data: "two", next: node3}
node1 := &Node{data: "one", next: node2}
PrintList(node1)
}
输出:
one
two
three
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消