实现单链表的增删查改。

目录如下:

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, newHeroNode *HeroNode) {
tmp := head for {
if tmp.next == nil {
tmp.next = newHeroNode
break
}
if tmp.next.ID > newHeroNode.ID {
tmp2 := tmp.next
tmp.next = newHeroNode
newHeroNode.next = tmp2
break
} else if tmp.next.ID == newHeroNode.ID {
fmt.Printf("已经存在id为%d的节点\n", tmp.next.ID)
break
} else {
tmp = tmp.next
}
} } //DeleteHeroNode 删除
func DeleteHeroNode(head *HeroNode, ID int) {
tmp := head
for {
if tmp.next == nil {
fmt.Println("链表中没有该id")
break
}
if tmp.next.ID == ID {
if tmp.next.next == nil {
tmp.next = nil
} else {
tmp2 := tmp.next.next
tmp.next = tmp2
}
break
} else {
tmp = tmp.next
}
}
} //FindHeroNode 查找
func FindHeroNode(head *HeroNode, ID int) {
tmp := head
for {
if tmp.next == nil {
fmt.Println("链表中没有该id")
break
}
if tmp.next.ID == ID {
fmt.Println("找到了该id")
break
} else {
tmp = tmp.next
}
}
} //ModifyHeroNode 修改
func ModifyHeroNode(head *HeroNode, ID int, changeName string) {
tmp := head
for {
if tmp.next == nil {
fmt.Println("链表中没有该id")
break
}
if tmp.next.ID == ID {
tmp.next.Name = changeName
break
} else {
tmp = tmp.next
}
}
} //ListHeroNode 显示信息
func ListHeroNode(head *HeroNode) {
tmp := head
if tmp.next == nil {
fmt.Println("链表为空")
return
}
for {
fmt.Printf("节点信息如下:id=%d,name=%s\n", tmp.next.ID, tmp.next.Name)
tmp = tmp.next
if tmp.next == nil {
fmt.Println("已显示所有信息")
break
}
}
}

main.go

package main

import "go_code/data_structure/link"

func main() {

    head := &link.HeroNode{}
hero1 := &link.HeroNode{
ID: ,
Name: "宋江",
}
hero2 := &link.HeroNode{
ID: ,
Name: "李逵",
}
hero4 := &link.HeroNode{
ID: ,
Name: "林冲",
}
hero3 := &link.HeroNode{
ID: ,
Name: "武松",
}
// link.InsertHeroNode(head, hero1)
// link.InsertHeroNode(head, hero2)
// link.InsertHeroNode(head, hero4)
// link.InsertHeroNode(head, hero3) link.InsertHeroNodeByID(head, hero2)
link.InsertHeroNodeByID(head, hero1)
link.InsertHeroNodeByID(head, hero4)
link.InsertHeroNodeByID(head, hero3)
link.DeleteHeroNode(head, )
link.FindHeroNode(head, )
link.ModifyHeroNode(head, , "我是修改后的英雄")
link.ListHeroNode(head)
}

运行结果:

最新文章

  1. Mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
  2. 【读书笔记】读《JavaScript设计模式》之适配器模式
  3. Open quote is expected for attribute "property" associated with an element type "result".错误
  4. NGUI List<EventDelegate> 小坑
  5. vijosP1629 八
  6. 驱动里执行应用层代码之KeUserModeCallBack(WOW64是由三个动态库wow64.dll wow64win.dll wow64cpu.dll来实现)
  7. 【中国剩余定理】POJ 1006 & HDU 1370 Biorhythms
  8. javascript实现99乘法表
  9. 入门到熟练-SpringBoot
  10. Batch训练的反向传播过程
  11. RxJava(八)concat符操作处理多数据源
  12. Java多线程_复习(更新中!!)
  13. PHP7 学习笔记(十七)变量函数 - unset
  14. Jvm类的加载机制
  15. 用matplotlib.pyplot画简单的折线图,直方图,散点图
  16. 关于在 java 8 下开启 TLS_RSA_WITH_3DES_EDE_CBC_SHA 支持 xp ie8 tls1.0 的正常访问
  17. CH 4401/Luogu 4168 - 蒲公英 - [分块]
  18. 在shell脚本里执行sudo 命令
  19. vue2 自定义时间过滤器
  20. 【[SCOI2016]背单词】

热门文章

  1. 使用docker部署filebeat和logstash
  2. Lua 5.1 学习笔记
  3. Appium从入门到实战合集
  4. 10. Go 语言反射
  5. Linux查看文件或文件夹大小du命令
  6. 了解Github
  7. ASP.NET Repeater与Button 以及viewState 和 hyperLink
  8. 请求时发送OPTIONS请求
  9. HDU 1081 To the Max 最大子矩阵(动态规划求最大连续子序列和)
  10. Python 一键获取百度网盘提取码