链接列表在Golang中不变

时间:2018-09-15 14:00:06

标签: go linked-list

我的问题是,当我将 head 指向 head.next

输入。Val仍然保持1而不是2(下一个值)。

type ListNode struct {
    Val  int
    Next *ListNode
}

func test(head *ListNode) *ListNode {
    head = head.Next
    return head
}

func main() {

    var input, input2 ListNode
    input = ListNode{Val: 1, Next: &input2}}
    input2 = ListNode{Val: 2} 

    test(&input)
    fmt.Println(input.Val)
}

1 个答案:

答案 0 :(得分:0)

此处已修复:

https://play.golang.org/p/VUeqh71nEaN

package main

import (
    "fmt"
)

type ListNode struct {
    Val  int
    Next *ListNode
}

func test(head *ListNode) *ListNode {
    head = head.Next
    return head
}

func main() {

    var input1, input2 ListNode
    input1 = ListNode{Val: 1, Next: &input2}
    input2 = ListNode{Val: 2, Next: &input1}

    input := test(&input1)
    fmt.Println(input.Val)
}

输出

2

问题在于您不使用test函数的返回值,并且传递了一个没有Next值的节点。