go - 一个结构体的单向链表的初始化

标签 go struct initialization singly-linked-list

对于我正在处理的一项任务,我们被指示创建两个实现 Stack 接口(interface)(包括 push、pop 等方法)的数据结构。当我完成第一个结构时,链表部分让我不知所措。作为正在编写他们的第一个 Go 项目的人,我不确定如何处理以下指令:

1.创建一个名为 StackLinked 的新结构,它实现了 Stacker,并使用单(或双)链表作为其内部表示。

2.除了实现 Stacker 中的所有方法外,还编写一个 makeStackLinked() 函数(不是方法!),该函数使用链表表示返回一个新的空堆栈

我曾尝试这样实现:

type StackLinked struct{
    top *StackLinked 
    next *StackLinked
    data int
    size int
}

func makeStackLinked() Stacker {
    list := &StackLinked{
        top : nil,
        next : nil,
        data : 0,
        size : 0,
    }
    return list;
}

我觉得我可能把事情复杂化了(我只用过 C++ 中的单链表)。

有没有人对实现 StackLinked 结构和随附的初始化函数的最佳方式有任何建议或建议?

编辑:函数头:func makeStackLinked() StackLinked {} 是分配的要求,不能更改。

谢谢!

最佳答案

使用以下内容:

type stackElement struct {
    next *stackElement
    data int
}

type StackLinked struct {
    head *stackElement
    n    int
}

func makeStackLinked() Stacker {
    return &StackLinked{}
}

关于go - 一个结构体的单向链表的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294158/

相关文章:

java - “局部变量 XXX 可能尚未初始化”错误 - 为什么它出现在我的代码中,而在本示例中却没有出现?

json - 如何在 Go 中通过 http 解码 JSON 检索

c++ - 通过 'next_permutation'算法发送一个struct对象的vector构建失败

c - 结构链表中的元素编号

go - 如何使用 reflect.Type 对 switch 进行断言

python - Tensorflow "Attempting to use uninitialized value ..."恢复时出错

java - 从一维数组初始化二维数组

windows - 无法将 virtualKey 转换为 unicode

http - 发送连接升级后,如何将客户端http连接升级到golang中的websockets

go - 应用程序的邮件系统之类的东西是否应该像本例所示那样在单独的 channel 中运行?