单链表-往最后面插入
复制 package main import "fmt" type HeroNode struct { no int name string nickname string next *HeroNode } //在单链表之后加入 func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) { temp := head for { if temp.next == nil { break } temp = temp.next } temp.next = newHeroNode } //显示链表的所有信息 func ListHeroNode(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.nickname) temp = temp.next if temp.next == nil { break } } } func main() { head := &HeroNode{} //头结点不需要初始化 hero1 := &HeroNode{ no: 1, name: "宋江", nickname: "及时雨", } hero2 := &HeroNode{ no: 2, name: "卢俊义", nickname: "玉麒麟", } InsertHeroNode(head, hero1) InsertHeroNode(head, hero2) ListHeroNode(head) }
单链表的有序插入
复制 package main import "fmt" type HeroNode struct { no int name string nickname string next *HeroNode } //在单链表之后加入 func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) { temp := head flag := true for { if temp.next == nil { break } else if temp.next.no > newHeroNode.no { break } else if temp.next.no == newHeroNode.no { flag = false break } temp = temp.next } if !flag { fmt.Println("对不起,已经存在no=", newHeroNode.no) return } else { newHeroNode.next = temp.next temp.next = newHeroNode } } //显示链表的所有信息 func ListHeroNode(head *HeroNode) { temp := head for { if temp.next == nil { return } fmt.Printf("[%d,%s,%s]==>", temp.next.no, temp.next.name, temp.next.nickname) temp = temp.next if temp.next == nil { break } } } func main() { head := &HeroNode{} //头结点不需要初始化 hero1 := &HeroNode{ no: 1, name: "宋江", nickname: "及时雨", } hero2 := &HeroNode{ no: 2, name: "卢俊义", nickname: "玉麒麟", } hero3 := &HeroNode{ no: 3, name: "林冲", nickname: "豹子头", } InsertHeroNode(head, hero1) InsertHeroNode(head, hero3) InsertHeroNode(head, hero2) ListHeroNode(head) }
单链表的有序插入(允许序号重复)
复制 package main import "fmt" type HeroNode struct { no int name string nickname string next *HeroNode } //在单链表之后加入 func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) { temp := head for { if temp.next == nil { break } else if temp.next.no > newHeroNode.no { break } temp = temp.next } newHeroNode.next = temp.next temp.next = newHeroNode } //显示链表的所有信息 func ListHeroNode(head *HeroNode) { temp := head for { if temp.next == nil { return } fmt.Printf("[%d,%s,%s]==>", temp.next.no, temp.next.name, temp.next.nickname) temp = temp.next if temp.next == nil { break } } } func main() { head := &HeroNode{} //头结点不需要初始化 hero1 := &HeroNode{ no: 1, name: "宋江", nickname: "及时雨", } hero2 := &HeroNode{ no: 2, name: "卢俊义", nickname: "玉麒麟", } hero3 := &HeroNode{ no: 2, name: "林冲", nickname: "豹子头", } InsertHeroNode(head, hero3) InsertHeroNode(head, hero2) InsertHeroNode(head, hero1) ListHeroNode(head) }
标签:head,单链,temp,no,HeroNode,next,Go,nickname From: https://www.cnblogs.com/wuchangblog/p/16704102.html