我很新,去實現鏈接列表並去殺死。下面是我的源代碼在鏈接列表的末尾插入項目
package main
import "fmt"
type Node struct {
value int
next *Node
}
func main() {
var head *Node
for i := 1; i <= 10; i++ {
insert(&head, i)
}
print_list(head)
}
func print_list(node_pointer *Node) {
if (node_pointer == nil) {
return
} else {
node := *node_pointer
fmt.Printf("%d\n", node.value)
print_list(node.next)
}
}
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) }
}
輸出是:
Empty list
Add 2
Add 3
Add 4
Add 5
Add 6
Add 7
Add 8
Add 9
Add 10
1
換句話說,我不能在鏈接列表的末尾插入一個新的節點。我相信這是由cur_node.next = &new_node
引起的,它只能在本地進行更新,但不知道如何解決這個問題。
它的工作原理!非常感謝你。但是,您能否提供關於我的功能問題的更多解釋。乾杯 –
你在原來的文章中解釋了這個問題 - '我相信這是由cur_node.next =&new_node造成的,它只在本地進行更新。解決的辦法是使用一個指針而不是對象,所以我只拿走了一個間接級別。 –