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循环单链表解决约瑟夫环问题
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 数据结构与算法-目录 前言 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个...
- 题目一:判断单链表中是否有环 描述:1.有环的定义:链表的尾结点指向了链表中的某个结点 两种解决方案 【方法一】 ...