golang数据结构之用循环链表解决约瑟夫环问题
2024-09-01 20:07:09
josephu.go
package link import (
"fmt"
) type Kid struct {
ID int
next *Kid
} func AddKid(num int) *Kid {
first := &Kid{}
cur := &Kid{} if num < {
fmt.Println("不合法")
return first
}
for i := ; i <= num; i++ {
kid := &Kid{
ID: ,
}
if i == {
first = kid
cur = kid
cur.next = first
} else {
tmpKid := &Kid{
ID: i,
}
cur.next = tmpKid
cur = tmpKid
cur.next = first }
}
return first
} func ShowKid(first *Kid) {
if first.next == nil {
fmt.Println("链表已空")
}
cur := first
for {
fmt.Printf("小孩编号:%d\n", cur.ID)
if cur.next == first {
break
}
cur = cur.next
}
}
func Play(first *Kid, start int, count int) { if first.next == nil {
fmt.Println("空链表")
return
}
tail := first
for {
//到最后一个节点了
if tail.next == first {
break
}
tail = tail.next
}
//删除就以frst为主,让first移动到要删除的位置
for i := ; i <= start-; i++ {
first = first.next
tail = tail.next
}
//开始数,然后进行删除
for {
for i := ; i <= count-; i++ {
first = first.next
tail = tail.next
}
fmt.Printf("编号为:%d 的出列\n", first.ID)
first = first.next
tail.next = first
if tail == first {
break
}
}
fmt.Printf("编号为:%d 的出列\n", first.ID)
}
main.go
package main import "go_code/data_structure/link" func main() { first := link.AddKid()
link.ShowKid(first)
link.Play(first, , )
}
运行结果:
f:\goproject\src\go_code\data_structure>go run main.go
小孩编号:1
小孩编号:2
小孩编号:3
小孩编号:4
小孩编号:5
小孩编号:6
小孩编号:7
小孩编号:8
小孩编号:9
小孩编号:10
小孩编号:11
小孩编号:12
小孩编号:13
小孩编号:14
小孩编号:15
小孩编号:16
小孩编号:17
小孩编号:18
小孩编号:19
小孩编号:20
编号为:3 的出列
编号为:6 的出列
编号为:9 的出列
编号为:12 的出列
编号为:15 的出列
编号为:18 的出列
编号为:1 的出列
编号为:5 的出列
编号为:10 的出列
编号为:14 的出列
编号为:19 的出列
编号为:4 的出列
编号为:11 的出列
编号为:17 的出列
编号为:7 的出列
编号为:16 的出列
编号为:8 的出列
编号为:2 的出列
编号为:13 的出列
编号为:20 的出列
最新文章
- Notification的功能与用法
- BZOJ2441: [中山市选2011]小W的问题
- 使用Keras对交通标志进行分类
- Windows 10 安装过程中,在自定义登录页面进入审核模式
- 7. Vulnerability exploitation tools (漏洞利用工具 11个)
- iptables命令提取总结,包含扩展模块<;取自朱双印博客>;
- Java面试题全集(下)转载
- 数据恢复Winhex的核心理念
- oracle数据库连接 ORA-12638:身份证明检索失败
- 使用.NET Core与Google Optimization Tools实现加工车间任务规划
- 设计模式---对象创建模式之原型模式(prototype)
- Python3在指定路径下递归定位文件中出现的字符串
- python之路----线程
- 理解ResourceBundle.getBundle(";dataSourceFactory";)
- FCC的javascript初级算法题解答
- pip install mysql-connector 安装出错
- 一文读懂加固apk的开发者是怎么想的
- 数据库路由中间件MyCat - 背景篇(2)
- fastlane自动化打包ipa并发布到firim或者蒲公英
- POJ 2763 Housewife Wind(树链剖分+树状数组)