package main
import "fmt"
type HeroNode struct {
no int
name string
name2 string
next *HeroNode
}
func InsertHeroNode2(head *HeroNode, newNode *HeroNode) {
tempNode := head
flag := true
for {
if tempNode.next == nil {
break
} else if tempNode.next.no > newNode.next.no {
break
} else if tempNode.next.no == newNode.next.no {
flag = false
break
}
tempNode = tempNode.next
}
if !flag {
fmt.Println("对不起,不允许插入...")
return
}
newNode.next = tempNode.next
tempNode.next = newNode
}
func ListHero(head *HeroNode) {
temp := head
if temp.next == nil {
fmt.Println("这个链表是空链表....")
return
}
for {
fmt.Printf("[%d, %s, %s] == >", temp.next.no,
temp.next.name, temp.next.name2)
temp = temp.next
if temp.next == nil {
break
}
}
}
func main() {
head := &HeroNode{}
hero1 := &HeroNode{
no: 1,
name: "aaa",
name2: "aaa",
}
hero2 := &HeroNode{
no: 2,
name: "bbb",
name2: "bbb",
}
hero3 := &HeroNode{
no: 3,
name: "ccc",
name2: "ccc",
}
InsertHeroNode2(head, hero3)
InsertHeroNode2(head, hero1)
InsertHeroNode2(head, hero2)
ListHero(head)
}
想制作个按顺序排列的单链表,以下是错误,报的错误找了半天没找到,求指点。
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x49849b]
goroutine 1 [running]:
main.InsertHeroNode2(0xc042061f40, 0xc042078060)
D:/goproject/src/go_code/aaa_test001/link/main.go:29 +0x4b
main.main()
D:/goproject/src/go_code/aaa_test001/link/main.go:79 +0x19a
exit status 2