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

类型堆栈。堆栈没有方法推送

类型堆栈。堆栈没有方法推送

Go
慕森王 2022-08-01 10:49:03
编写堆栈包。package stacktype Stack struct {    data []interface{}}func (s *Stack) IsEmpty() bool {    return len(s.data) == 0}func (s *Stack) Push(item interface{}) {    s.data = append(s.data, item)    //fmt.Println(s.data, item)}func (s *Stack) Pop() interface{} {    if len(s.data) == 0 {        return nil    }    index := len(s.data) - 1    res := s.data[index]    s.data = s.data[:index]    return res}然后尝试调用它package mainimport (    s "library/stack"    t "library/tree")func preorderTraversal(root *t.TreeNode) []int {    res := make([]int, 0)    if root == nil {        return res    }    // iterative    var stack *s.Stack    stack.Push(root)    // TODO: more logic    return res}func main() {    left := t.TreeNode{1, nil, nil}    right := t.TreeNode{2, nil, nil}    root := t.TreeNode{0, &left, &right}    fmt.Println(preorderTraversal(&root))}但是我遇到了一个错误stack.Push undefined (type *stack.Stack has no field or method Push)这是什么问题?编辑:添加树包只是为了方便package treetype TreeNode struct {    Val   int    Left  *TreeNode    Right *TreeNode}添加了基于Cerise Limón play.golang.org/p/E4JXjc-Pd0i
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您肯定需要实例化变量,而不仅仅是创建一个指针。然后它应该工作:stacknil


stack := &s.Stack{}

stack.Push(root)

注意:让我有点困惑的是错误消息。当我运行你的程序时,它会惊慌失措:panic: runtime error: invalid memory address or nil pointer dereference


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

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