您的位置:首页 > 编程语言 > Go语言

约瑟夫go实现

2016-12-28 22:34 363 查看
package main

import (
"fmt"
"os"
)

type Node struct {
num int
pNext *Node
}

func createList( size int) *Node{
if size<0{
os.Exit(-1)
}
p:=new(Node)
p.num=1
q:=p
for i:=2;i<=size;i++ {
pnew:=new(Node)
pnew.num=i
p.pNext=pnew
p=pnew
}
p.pNext=q
return p
}

func isempty(list *Node) bool {
if list.pNext==list {
return true
}
return false
}

func traverse(list *Node){
if isempty(list) {
return
}
p:=list.pNext
for ;p!=list;p=p.pNext {
fmt.Printf("%5d",p.num)
}
fmt.Printf("%5d",list.num)
fmt.Println()
}

func listLength(list *Node) int {
i:=1
for p:=list.pNext;p!=list;p=p.pNext{
i++
}
return i
}
func jose(list *Node,n int) {
p:=list.pNext
count:=1
for 1<listLength(p) {
for i:=1;i<n-1;i++ {
p=p.pNext

}
tmp:=p.pNext
fmt.Printf("第%d个出局的人为:%3d号\n",count,tmp.num)
p.pNext=tmp.pNext
p=tmp.pNext
tmp=nil
count++

}
fmt.Println("最后获胜的是:",p.num)
}
func main() {
list:=createList(41)
traverse(list )
jose(list,3)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 go语言