c语言程序课程设计

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:53:44
n只猴子要选大王,所有猴子按1,2....n围成一圈,从第一个开始按1,2,......m报数,凡报到m的退出圈外,如此循环,直到圈内只剩下一只猴子,它就是大王。
用单循环链表存储结构模拟此过程,输出大王编号。

#include<stdio.h>
#define N 100
void main()
{
struct num
{int number;
int next;
}a[N+1];
int i,k,h,n,m,quit_number;
printf("input n&m:\n");
scanf("%d%d",&n,&m);
for(i=0;i<=n;i++)
{if(i==n)a[i].next=1;
else a[i].next=i+1;
a[i].number=i;}
quit_number=0;
h=n;
while(quit_number<n-1)
{k=0;
while(k!=m)
{h=a[h].next;
if(a[h].number!=0)k++;
}
a[h].number=0;
quit_number++;
}
for(i=0;i<n;i++)
if(a[i].number!=0)
printf("%3d",a[i].number);
}