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

类型 stack.Stack 没有方法 Push

类型 stack.Stack 没有方法 Push

Go
红颜莎娜 2022-07-25 11:03:31
编写堆栈包。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 的 goplayground 代码
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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

stack := &s.Stack{}
stack.Push(root)

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


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号