2 回答

TA貢獻1993條經驗 獲得超6個贊
問題出在您的插入功能中 - 這是一個更正的版本
func insert(node_pointer **Node, // pointer to a pointer to a Node
value int) {
var new_node Node
new_node.value = value
if *node_pointer == nil {
fmt.Printf("Empty list\n")
*node_pointer = &new_node
} else {
var cur_node *Node = *node_pointer
for cur_node.next != nil {
cur_node = cur_node.next
}
cur_node.next = &new_node
fmt.Printf("Add %d\n", (*cur_node.next).value)
}
}

TA貢獻2065條經驗 獲得超14個贊
你的錯誤是因為你得到了節點值,而不是這里的指針:
var cur_node Node = **node_pointer
*note_pointer
是一個指向列表頭的指針,但你正在使用**node_pointer
,然后你得到值,然后將此值復制到cur_node
,然后新節點將被附加到cur_node
,與頭節點無關。所以當你打印表單頭節點時,你可以只獲取頭節點的值。
固定解決方案就像@Nick Craig-Wood 所說的。
- 2 回答
- 0 關注
- 137 瀏覽
添加回答
舉報