对于我正在处理的一项任务,我们被指示创建两个实现 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/