2 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
問題出在您的插入功能中 - 這是一個(gè)更正的版本
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貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
你的錯(cuò)誤是因?yàn)槟愕玫搅斯?jié)點(diǎn)值,而不是這里的指針:
var cur_node Node = **node_pointer
*note_pointer
是一個(gè)指向列表頭的指針,但你正在使用**node_pointer
,然后你得到值,然后將此值復(fù)制到cur_node
,然后新節(jié)點(diǎn)將被附加到cur_node
,與頭節(jié)點(diǎn)無關(guān)。所以當(dāng)你打印表單頭節(jié)點(diǎn)時(shí),你可以只獲取頭節(jié)點(diǎn)的值。
固定解決方案就像@Nick Craig-Wood 所說的。
- 2 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報(bào)