Проблема в AddToHead
, в частности:
head = newHead
Переменная head
- это указатель, указывающий на голову. Когда вы присваиваете head
для newHead
, переменная node
, которую вы использовали для вызова AddToHead
, не изменяется, изменяется копия переменной node
(то есть head
). Таким образом, вы никогда не обновляете голову.
Один из способов исправить это - вернуть новую голову:
func (head *ListNode) AddToFirst(n int) *ListNode {
newHead := &ListNode{val: n}
newHead.Next = head
return newHead
}
И использовать ее:
node := New(4)
node=node.AddToFirst(5)
node=node.AddToFirst(8)
node=node.AddToFirst(10)
node.Print()