对于我正在进行的任务,我们被指示创建两个实现Stack接口的数据结构(包括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 {}是作业的要求,不能改变。
谢谢!
答案 0 :(得分:0)
使用以下内容:
type stackElement struct {
next *stackElement
data int
}
type StackLinked struct {
head *stackElement
n int
}
func makeStackLinked() Stacker {
return &StackLinked{}
}
答案 1 :(得分:0)
您可以使用以下内容:
type Student struct {
Name string `json:"name"`
ID string `json:"id"`
Next *Student
}
func (s *Student) Insert(name, sid string) {
st := &Student {
Name: name,
ID: sid,
Next: s.Next,
}
s.Next = st
}
func (s *Student) Show() {
for st := s.Next; st != nil; st = st.Next {
fmt.Println(st.Name,st.ID)
}
}
func main ( ) {
root := new ( Student )
root.Insert ( "Juan", "54542" )
root.Insert ( "Lito", "93828" )
root.Show()
}
Output:
Lito 93828
Juan 54542