一个结构体的单向链表的初始化
Initialization of Singly Linked List with one Struct
对于我正在处理的作业,我们被指示创建两个实现 Stack 接口(包括 push、pop 等方法)的数据结构。当我完成第一个结构时,链表部分让我不知所措。作为正在编写他们的第一个 Go 项目的人,我不确定如何处理以下指令:
1.Create 一个名为 StackLinked 的新结构,它实现了 Stacker,并使用单(或双)链表作为其内部表示。
2.In 除了实现 Stacker 中的所有方法外,还编写一个 makeStackLinked() 函数(不是方法!),用这个 header returns 使用链接的新空堆栈列表表示
我曾尝试这样实现:
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 结构和随附的初始化函数的最佳方式有任何建议或建议?
编辑:函数 header: func makeStackLinked() StackLinked {} 是分配的要求,不能更改。
谢谢!
使用以下内容:
type stackElement struct {
next *stackElement
data int
}
type StackLinked struct {
head *stackElement
n int
}
func makeStackLinked() Stacker {
return &StackLinked{}
}
您可以使用以下内容:
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
对于我正在处理的作业,我们被指示创建两个实现 Stack 接口(包括 push、pop 等方法)的数据结构。当我完成第一个结构时,链表部分让我不知所措。作为正在编写他们的第一个 Go 项目的人,我不确定如何处理以下指令:
1.Create 一个名为 StackLinked 的新结构,它实现了 Stacker,并使用单(或双)链表作为其内部表示。
2.In 除了实现 Stacker 中的所有方法外,还编写一个 makeStackLinked() 函数(不是方法!),用这个 header returns 使用链接的新空堆栈列表表示
我曾尝试这样实现:
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 结构和随附的初始化函数的最佳方式有任何建议或建议?
编辑:函数 header: func makeStackLinked() StackLinked {} 是分配的要求,不能更改。
谢谢!
使用以下内容:
type stackElement struct {
next *stackElement
data int
}
type StackLinked struct {
head *stackElement
n int
}
func makeStackLinked() Stacker {
return &StackLinked{}
}
您可以使用以下内容:
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