数据结构上级实验用顺序表解决约瑟夫环问题
四、源程序代码
#include <stdio.h> #include "stdlib.h" #define MaxSize 100
void josephus(int n,int m); void main() {
int n,m;
printf("请输入人数n(不超过100人):"); for(;;) {
fflush(stdin);/*清空输入缓冲区*/ scanf("%d",&n); if(n<0||n>100)
printf("你的输入有误!请重新输入总人数(不超过100人):"); else break; }
printf("请输入每次循环出列所数的次数m:"); for(;;) {
fflush(stdin);/*清空输入缓冲区*/ scanf("%d",&m); if(m<0||m>100)
printf("你的输入有误!请重新输入总人数(不超过100人):"); else break; }
josephus(n,m); }
void josephus(int n,int m) {
int p[MaxSize]; int i,j,t;
for(i=0;i<n;i++) p[i]=i+1; t=0;
printf("出列顺序:"); for(i=n;i>=1;i--) {
t=(t+m-1)%i;
printf("%d ",p[t]); for(j=t+1;j<=i-1;j++) p[j-1]=p[j];