约瑟夫环
来源:互联网 发布:任玩堂 知乎 编辑:程序博客网 时间:2024/06/05 00:37
#include<cstdio>#include<cstdlib>//#include<bits/stdc++.h>using namespace std;typedef struct Lnode{ int id; int code; struct Lnode *next;}Lnode,*Linklist;Linklist Createlist(int n)//创建链表 { Lnode *head=NULL,*tail=NULL; for(int i=1;i<=n;i++) { //Lnode *p=(Lnode *)malloc(sizeof(struct Lnode)); Linklist p=(Linklist)malloc(sizeof(Linklist)); p->id=i; printf("输入第%d个人的密码:",i); scanf("%d",&p->code); if(tail) tail->next=p; else head=p; tail=p; } if(tail)//成环 tail->next=head; return tail;}void print(Linklist tail)//输出 { Linklist head=tail; Linklist p=tail->next; printf("每个人的初始序号和初始密码:\n"); while(p!=head)//head标志起点 { printf("(%d %d) ",p->id,p->code); p=p->next; } printf("(%d %d)",p->id,p->code);}Linklist play(Linklist& tail,int n,int m)//进行游戏 { Linklist pre,p; pre=tail; printf("出列顺序为:"); while(n>1) { p=pre->next; m==m%n?m%n:n;//= for(int i=1;i<=m-1;i++) { pre=p; p=p->next; } printf("%d ",p->id); //p=p->next pre->next=p->next; m=p->code; n--; } printf("%d\n\n",pre->id);//pre始终指向为待出列人前驱 }int main(){ int n,m; printf("输入总人数和初始密码:"); while(scanf("%d",&n),n) { scanf("%d",&m); printf("*人数为0则游戏结束*\n"); Linklist tail=Createlist(n); if(tail) { print(tail); play(tail,n,m); } printf("输入总人数和初始密码:"); } return 0; }
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 转战CSDN开博第一篇
- eclipse一个项目引用另一个项目的问题
- C#面向对象(三)多态
- exsi5.5上KVM二次虚拟化环境搭建
- 约瑟夫环
- 又快一年没来CSDN了,记录一下,从今天开始写写segment-routing相关的学习记录
- 机房进行思路
- 136. Single Number
- Scanner输入过滤
- Altium Designer Summer 09如何将PCB图利用输出类似工程文档的方法
- 网络爬虫基本原理(二)
- 数据结构 栈的应用——算术表达式求值
- X86 架构