|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct s
{
int data;
struct s *next;
}huan;
huan *chushihua(); //初始化约瑟夫环
void shuchu(huan *phode); //输出
void weizhi(huan *phode,int i); //递归输出自杀人的位置
void main()
{
huan *phode;
int i=1;
phode=chushihua();
shuchu(phode);
weizhi(phode,i);
}
huan *chushihua() //初始化约瑟夫环
{
huan *hode,*p,*p1;
int i;
hode=p=p1=NULL;
for(i=1; i<=41; i++)
{
p=(huan *)malloc(sizeof(huan));
if(i==1)
{
hode=p;
p->data =i;
}
else
{
p1->next =p;
p->data =i;
}
p1=p;
}
p->next =hode;
return hode;
}
void shuchu(huan *phode) //输出
{
huan *p=phode;
do
{
printf("%5d",p->data );
p=p->next ;
}
while(phode!=p );
printf("\n\n");
}
void weizhi(huan *phode,int i) //递归输出自杀人的位置
{
if(phode==phode->next)
{
return;
}
else
{
if(phode->data ==0)
{
i--;
}
if(i==3)
{
printf("%d号自杀去\n",phode->data);
phode->data=0;
i=0;
}
weizhi(phode->next,++i);
}
}
|
|