标签:head 单链 temp no HeroNode next Go nickname
单链表-往最后面插入
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 来源: https://www.cnblogs.com/jgg54335/p/15868986.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。