约瑟夫go实现

来源:互联网 发布:js获取两位小数函数 编辑:程序博客网 时间:2024/06/05 19:58
package mainimport ("fmt""os")type Node struct {num intpNext *Node}func createList( size int) *Node{if size<0{os.Exit(-1)}p:=new(Node)p.num=1q:=pfor i:=2;i<=size;i++ {pnew:=new(Node)pnew.num=ip.pNext=pnewp=pnew}p.pNext=qreturn p}func isempty(list *Node) bool {if list.pNext==list {return true}return false}func traverse(list *Node){if isempty(list) {return}p:=list.pNextfor ;p!=list;p=p.pNext {fmt.Printf("%5d",p.num)}fmt.Printf("%5d",list.num)fmt.Println()}func listLength(list *Node) int {i:=1for p:=list.pNext;p!=list;p=p.pNext{i++}return i}func jose(list *Node,n int) {p:=list.pNextcount:=1for 1<listLength(p) {for i:=1;i<n-1;i++ {p=p.pNext}tmp:=p.pNextfmt.Printf("第%d个出局的人为:%3d号\n",count,tmp.num)p.pNext=tmp.pNextp=tmp.pNexttmp=nilcount++}fmt.Println("最后获胜的是:",p.num)}func main() {list:=createList(41)traverse(list )        jose(list,3)}

0 0
原创粉丝点击