golang数据结构之双链表
发布时间:2020-12-16 09:18:12 所属栏目:大数据 来源:网络整理
导读:目录结构: ? ?doubleLink.go package linkimport ( " fmt " ) // HerosNode 链表节点 type HerosNode struct { ID int Name string pre *HerosNode 指针 next *HerosNode 指针 } InsertHerosNode 插入 func InsertHerosNode(head *HerosNode,newHerosNode *
目录结构: ? ?doubleLink.go package link import ( "fmt" ) //HerosNode 链表节点 type HerosNode struct { ID int Name string pre *HerosNode 指针 next *HerosNode 指针 } InsertHerosNode 插入 func InsertHerosNode(head *HerosNode,newHerosNode *HerosNode) { tmp := head for { if tmp.next == nil { break } tmp = tmp.next } tmp.next = newHerosNode newHerosNode.pre = tmp } InsertHerosNodeByID 根据id从小到大插入 func InsertHerosNodeByID(head *HerosNode,1)"> head nil { tmp.next = newHerosNode newHerosNode.pre = tmp } if tmp.next.ID > newHerosNode.ID { tmp.next.pre = tmp tmp2 := tmp.next tmp.next = newHerosNode newHerosNode.next = tmp2 } else if tmp.next.ID == newHerosNode.ID { fmt.Printf(已经存在id为%d的节点n,tmp.next.ID) else { tmp = tmp.next } } } DeleteHerosNode 删除 func DeleteHerosNode(head *HerosNode,ID ) { tmp := nil { fmt.Println(链表中没有该id) ID { if tmp.next.next == nil { tmp.next = nil } { tmp2 := tmp.next.next tmp.next = tmp2 tmp2.pre = tmp } tmp.next } } } FindHerosNode 查找 func FindHerosNode(head *HerosNode,1)"> ID { fmt.Println(找到了该idModifyHerosNode 修改 func ModifyHerosNode(head *HerosNode,1)">int,changeName ID { tmp.next.Name = changeName ForListHerosNode 显示信息 func ForListHerosNode(forHead *HerosNode) { fmt.Println(正向打印所有信息) tmp := forHead nil { fmt.Println(链表为空) return } { fmt.Printf(节点信息如下:id=%d,name=%sn tmp.next 已显示所有信息 } } } BackListHerosNode 显示信息 func BackListHerosNode(head *----------------------) fmt.Println(反向打印所有信息var backHead *HerosNode { tmp = nil { backHead = } } backHead.pre if backHead.pre == head { fmt.Printf( } } } main.go package main import go_code/data_structure/link func main() { head := &link.HerosNode{} hero1 := &link.HerosNode{ ID: 1宋江2李逵4林冲3武松 link.InsertHerosNode(head,hero1) link.InsertHerosNodeByID(head,hero2) link.InsertHerosNodeByID(head,hero1) link.InsertHerosNodeByID(head,hero4) link.InsertHerosNodeByID(head,hero3) link.DeleteHerosNode(head,) link.FindHerosNode(head,1)">) link.ModifyHerosNode(head,1)">4,我是修改后的英雄) link.ForListHerosNode(head) link.BackListHerosNode(head) } 运行结果: ? ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |