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实现
最新推荐文章于 2024-05-23 19:50:27 发布