实现单链表的增删查改。
目录如下:
singleLink.go
package link import ( "fmt" ) //HeroNode 链表节点 type HeroNode struct { ID int Name string next *HeroNode 指针 } InsertHeroNode 插入 func InsertHeroNode(head *HeroNode,newHeroNode *HeroNode) { tmp := head for { if tmp.next == nil { break } tmp = tmp.next } tmp.next = newHeroNode } InsertHeroNodeByID 根据id从小到大插入 func InsertHeroNodeByID(head *HeroNode,1)"> head nil { tmp.next = newHeroNode } if tmp.next.ID > newHeroNode.ID { tmp2 := tmp.next tmp.next = newHeroNode newHeroNode.next = tmp2 } else if tmp.next.ID == newHeroNode.ID { fmt.Printf(已经存在id为%d的节点\n,tmp.next.ID) else { tmp = tmp.next } } } DeleteHeroNode 删除 func DeleteHeroNode(head *HeroNode,ID ) { tmp := nil { fmt.Println(链表中没有该id) ID { if tmp.next.next == nil { tmp.next = nil } { tmp2 := tmp.next.next tmp.next = tmp2 } tmp.next } } } FindHeroNode 查找 func FindHeroNode(head *HeroNode,1)"> ID { fmt.Println(找到了该idModifyHeroNode 修改 func ModifyHeroNode(head *HeroNode,1)">int,changeName ID { tmp.next.Name = changeName ListHeroNode 显示信息 func ListHeroNode(head * nil { fmt.Println(链表为空) return } { fmt.Printf(节点信息如下:id=%d,name=%s\n tmp.next 已显示所有信息 } } }
main.go
package main import go_code/data_structure/link func main() { head := &link.HeroNode{} hero1 := &link.HeroNode{ ID: 1宋江2李逵4林冲3武松 link.InsertHeroNode(head,hero1) link.InsertHeroNodeByID(head,hero2) link.InsertHeroNodeByID(head,hero1) link.InsertHeroNodeByID(head,hero4) link.InsertHeroNodeByID(head,hero3) link.DeleteHeroNode(head,) link.FindHeroNode(head,1)">) link.ModifyHeroNode(head,1)">4,我是修改后的英雄) link.ListHeroNode(head) }
运行结果: