Я пытаюсь создать линейный связанный список в go с рекурсивными функциями, но по какой-то причине я не получаю правильный результат.
Когда я добавляю число в список, я заметил, что L.head
никогда не обновляется после возврата метода recursiveAdd
. Разве его не следует обновлять, учитывая, что это указатель?
Ожидаемый результат после list.Display()
: 1 2 3
Фактический результат: пустая строка
package main
import "fmt"
type Node struct {
num int
next *Node
}
type List struct {
head *Node
}
func (L *List) Add(n int) {
L.recursiveAdd(L.head, n)
}
func recursiveAdd(node *Node, n int){
if node == nil {
node = &Node{n, nil}
return
}
L.recursiveAdd(node.next, n)
}
func (L *List) Display() {
recursiveDisplay(L.head)
}
func recursiveDisplay(n *Node){
if n == nil {
return
}
fmt.Println(n.num)
recursiveDisplay(n.next)
}
func main(){
list := List{}
list.Add(1)
list.Add(2)
list.Add(3)
list.Display()
}