当前位置: 首页 > news >正文

go单向链表

需求

实现单向链表的节点顺序添加、顺序遍历。

实现

package mainimport ("fmt"
)type zodiac_sign struct {number intdizhi  stringanimal stringyear   intnext   *zodiac_sign
}// 添加
// func add_node_by_order(previous_node zodiac_sign, current_node zodiac_sign) zodiac_sign {
func add_node_by_order(previous_node *zodiac_sign, current_node *zodiac_sign) *zodiac_sign {if (previous_node.number + 1) == current_node.number {previous_node.next = current_nodefmt.Printf("节点%s的next指针已指向节点%s的地址%p\n", previous_node.animal, current_node.animal, previous_node.next)return current_node} else {fmt.Printf("顺序错误:禁止添加新节点%s\n", current_node.animal)return previous_node}
}// 查找
func check_node_by_order(current_node *zodiac_sign) {if current_node.next == nil {fmt.Printf("最后一年是%d年、%s年\n", current_node.year, current_node.animal)} else {fmt.Printf("%d年为%s年\n", current_node.year, current_node.animal)check_node_by_order(current_node.next)}
}func main() {p := &zodiac_sign{}// var p *zodiac_signmouse := &zodiac_sign{number: 1, dizhi: "子", animal: "鼠", year: 2020}// var mouse zodiac_sign// mouse.number = 1// mouse.dizhi = "子"// mouse.animal = "鼠"// mouse.year = 2020cow := &zodiac_sign{number: 2, dizhi: "丑", animal: "牛", year: 2021}tiger := &zodiac_sign{number: 3, dizhi: "寅", animal: "虎", year: 2022}rabbit := &zodiac_sign{number: 4, dizhi: "卯", animal: "兔", year: 2023}dragon := &zodiac_sign{number: 5, dizhi: "辰", animal: "龙", year: 2024}snake := &zodiac_sign{number: 6, dizhi: "巳", animal: "蛇", year: 2025}horse := &zodiac_sign{number: 7, dizhi: "午", animal: "马", year: 2026}sheep := &zodiac_sign{number: 8, dizhi: "未", animal: "羊", year: 2027}monkey := &zodiac_sign{number: 9, dizhi: "申", animal: "猴", year: 2028}cock := &zodiac_sign{number: 10, dizhi: "酉", animal: "鸡", year: 2029}dog := &zodiac_sign{number: 11, dizhi: "戌", animal: "狗", year: 2030}pig := &zodiac_sign{number: 12, dizhi: "亥", animal: "猪", year: 2031}p = add_node_by_order(p, mouse)// fmt.Print(p)head := pp = add_node_by_order(p, cow)p = add_node_by_order(p, tiger)p = add_node_by_order(p, rabbit)p = add_node_by_order(p, dragon)p = add_node_by_order(p, snake)// 错误连接add_node_by_order(p, pig)p = add_node_by_order(p, horse)p = add_node_by_order(p, sheep)p = add_node_by_order(p, monkey)// 错误连接add_node_by_order(p, rabbit)p = add_node_by_order(p, cock)p = add_node_by_order(p, dog)p = add_node_by_order(p, pig)check_node_by_order(head)
}
节点的next指针已指向节点鼠的地址0xc000030140
节点鼠的next指针已指向节点牛的地址0xc000030180
节点牛的next指针已指向节点虎的地址0xc0000301c0
节点虎的next指针已指向节点兔的地址0xc000030200
节点兔的next指针已指向节点龙的地址0xc000030240
节点龙的next指针已指向节点蛇的地址0xc000030280
顺序错误:禁止添加新节点猪
节点蛇的next指针已指向节点马的地址0xc0000302c0
节点马的next指针已指向节点羊的地址0xc000030300
节点羊的next指针已指向节点猴的地址0xc000030340
顺序错误:禁止添加新节点兔
节点猴的next指针已指向节点鸡的地址0xc000030380
节点鸡的next指针已指向节点狗的地址0xc0000303c0
节点狗的next指针已指向节点猪的地址0xc000030400
2020年为鼠年
2021年为牛年
2022年为虎年
2023年为兔年
2024年为龙年
2025年为蛇年
2026年为马年
2027年为羊年
2028年为猴年
2029年为鸡年
2030年为狗年
最后一年是2031年、猪年

http://www.mrgr.cn/news/100672.html

相关文章:

  • 【LeetCode】螺旋矩阵
  • TwinCAT3安装记录
  • 在VTK中使用巴特沃斯低通滤波器(频域处理)
  • 探索目标检测:边界框与锚框的奥秘
  • 【Vagrant+VirtualBox创建自动化虚拟环境】Ansible测试Playbook
  • Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(三)
  • 如何在本地部署小智服务器:从源码到全模块运行的详细步骤
  • RPC 是什么?为什么有了 HTTP 还要用 RPC
  • Linux/AndroidOS中进程间的通信线程间的同步 - 管道和FIFO
  • LLamaFactory如何在Windows系统下部署安装训练(保姆级教程)
  • 【嵌入式———基本定时器TIM6基本操作——实验需求:使用系统嘀嗒定时器,每隔1s让LED1灯闪烁一次】】
  • Next框架学习篇 ✅
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(5):MCP之微服务架构
  • runpod team 怎么设置自己的ssh key呢?
  • 【统计方法】交叉验证:Resampling, nested 交叉验证等策略 【含R语言】
  • 如何用python脚本把一个表格有4万多条数据分为两个文件表,每个2万条数据?
  • unity Orbbec Femto Bolt接入unity流程记录 AzureKinectExamples 插件 使用记录
  • Android WIFI体系
  • LeetCode热题100--53.最大子数组和--中等
  • 2025.4.29总结