gpt4 book ai didi

go - 为什么此链表未添加新节点?

转载 作者:行者123 更新时间:2023-12-01 22:07:13 25 4
gpt4 key购买 nike

我要制作一个单链列表,并将每个数据插入头部。我编写了以下代码,但是我不知道为什么它会给我错误的结果。

type ListNode struct {
val interface{}
Next *ListNode
}

func New(n int) *ListNode {
node := &ListNode{val: n}
return node
}

func (head *ListNode) Print() {
for head != nil {
fmt.Println(head.val)
head = head.Next
}
}

func (head *ListNode) AddToFirst(n int) {
newHead := &ListNode{val: n}
newHead.Next = head
head = newHead
}


这是我的测试数据
node := New(4)
node.AddToFirst(5)
node.AddToFirst(8)
node.AddToFirst(10)
node.Print()

当我的输入是

4, 5, 8, 10



我想要输出

10, 8, 5, 4



希望您能帮助我解释为什么会这样。我不明白为什么?
我使用指针来添加值,并且不使用引用类型。

最佳答案

您应该首先定义一个Node结构类型,然后定义一个ListNode结构类型...
就像是 :

type Node struct {
val int
next *Node
}

type ListNode struct {
head *Node
}

然后,您的AddToFirst很明显:
func (list *ListNode) AddToFirst(n int) {
list.head = &Node{val: n, next: list.head}
}

当心您的Print()函数:它不应修改列表,而只能对其进行迭代。

关于go - 为什么此链表未添加新节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com