#include <stdio.h>
#include <malloc.h>
struct person
{
int data;
struct person* node;
};
void dowith(int ,int );
int main()
{
int m = 6, n = 5;
printf("请输入总共的人数(>2的正整数):");
scanf("%d",&n);
printf("请输入数数的数字(>0的正整数):");
scanf("%d",&m);
dowith(m,n);
return 0;
}
void dowith(int m,int n)
{
struct person* head;
struct person* p;
int i;
for( i=1;i<=n;i++)
{
struct person *pee = (struct person*)malloc(sizeof(struct person));
pee->data = i;
if(i==1)
{
head = pee;
p = pee;
}
else if(i==n)
{
p->node = pee;
pee->node = head;
}
else
{
p->node = pee;
p = pee;
}
}
printf("排成圈的序列如下:\n");
p = head;
while((p->node) != head)
{
printf("%d ",p->data);
p = p->node;
}
printf("%d\n",p->data);
/////////
struct person* pre = head;
if(m>1) p = pre->node;
else if(m==1)
{
printf("叫数字 %d 出列次序如下:\n",m);
p = head;
while((p->node) != head)
{
printf("%d ",p->data);
p = p->node;
}
printf("%d\n",p->data);
return ;
}
else
{
printf("输入错误!\n");
return ;
}
//////////
printf("叫数字 %d 出列次序如下:\n",m);
int k = 2;
while(pre != p)
{
if(k%m==0)
{
printf("%d ",p->data);
pre->node = p->node;
p = pre->node;
k = 1;
}
else
{
pre = p;
p = p->node;
k++;
}
}
printf("%d\n",p->data);
}
评论