C语言 设有n个人,其编号分别为1,2,3,…,n,安装编号顺序顺时针围坐一圈.选定一个正整数m,从第一个人开始顺时针报数,报到m时,则此人出列,然后从他的下一个人从1重新报数,依此类推,直到所有

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 19:18:27
C语言   设有n个人,其编号分别为1,2,3,…,n,安装编号顺序顺时针围坐一圈.选定一个正整数m,从第一个人开始顺时针报数,报到m时,则此人出列,然后从他的下一个人从1重新报数,依此类推,直到所有

C语言 设有n个人,其编号分别为1,2,3,…,n,安装编号顺序顺时针围坐一圈.选定一个正整数m,从第一个人开始顺时针报数,报到m时,则此人出列,然后从他的下一个人从1重新报数,依此类推,直到所有
C语言
   设有n个人,其编号分别为1,2,3,…,n,安装编号顺序顺时针围坐一圈.选定一个正整数m,从第一个人开始顺时针报数,报到m时,则此人出列,然后从他的下一个人从1重新报数,依此类推,直到所有人全部出列为止,求出列的顺序.

C语言 设有n个人,其编号分别为1,2,3,…,n,安装编号顺序顺时针围坐一圈.选定一个正整数m,从第一个人开始顺时针报数,报到m时,则此人出列,然后从他的下一个人从1重新报数,依此类推,直到所有
#include
#include
typedef struct node{
int value;
struct node *next;
}NODE;
NODE *createlink(int n){
NODE *head=NULL,*p=NULL,*q=NULL;
int i=1;
head=p=(struct node*)malloc(sizeof(struct node));
p->value=i;
for(i=2;inext=q;
 p=q;
 p->value=i;
 }
p->next=head;
return head;
}
void jose(NODE *p,int n,int m){
int i,j,g=0;
NODE *q=NULL;
for(i=1;inext;
p->next=q->next;
 if(g%5==0)
{g++;printf("\n");}
else g++;
printf("%3d:%3dout ",i,q->value-1);
free(q);
}
printf("\n");
p->next=NULL;
}
int main( ){
int m=0;
int n=0;
scanf("%d",&m);
scanf("%d",&n);
NODE *head=NULL;
head=createlink(n);
jose(head,n,m);

return 0;
}