package main
import "fmt"
type Node struct {
data int
next *Node
}
//创建一个尾连首的链
func initLoop () *Node{
first := new(Node)
first.next = first
return first
}
func (n *Node)Maps (){
first := n
fmt.Println("Maps start---------------")
for n.next != first{
fmt.Print(n.data,"\t")
n = n.next
}
fmt.Println(n.data)
}
func (n *Node)Appends (data int){
if n.data == 0{
n.data = data
return
}
first := n
temp :=&Node{data,nil}
for {
if n.next == first{
temp.next = first
n.next =temp
return
}
n = n.next
}
}
func main(){
li := initLoop()
for i:=0;i<41;i++{
li.Appends(i+1)
}
li.Maps() //1 2 3 4 5
num :=1;
for li.next !=li{
num++
if num % 3 == 0{
fmt.Print(li.next.data,">>") // 3>>1>>5>>2>>
li.next = li.next.next
num++
}
li = li.next
}
fmt.Println(li) //&{4 0xc42000e200} 最后留下第四位
}
Go循环单链表解决约瑟夫环问题
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 数据结构与算法-目录 前言 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个...
- 题目一:判断单链表中是否有环 描述:1.有环的定义:链表的尾结点指向了链表中的某个结点 两种解决方案 【方法一】 ...