1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 typedef struct person{ 5 int num; 6 struct person* next; 7 }P; 8 int main() 9 {10 int n,m;11 scanf("%d%d",&n,&m);12 P* ph=(P*)malloc(sizeof(P));//建个头(不存数据) 13 ph->next = NULL;14 P* a = ph;15 for(int i=0; i<n; i++)16 {17 P* p=(P*)malloc(sizeof(P));18 p->num = i+1;19 a->next = p;//连接 20 a = p;21 if(i!=n-1)22 {23 p->next = NULL;24 } else //使之成环 25 {26 p->next = ph->next;27 } 28 }29 a = ph->next;//从此处开始在环里转圈圈 O(∩_∩)O 30 31 int N=n, M=m,i=0;32 P* pre = NULL;33 while(N--)34 {35 if(M==1){36 M=m;//初始化 37 }38 while(M != 1)//每隔 m-1 个节点输出一下 39 {40 pre = a;//记住a停留过的上一个节点 41 a = a->next;42 M--;43 }44 printf("%d ",a->num);45 //把该节点从环中抛弃 46 a = a->next;47 pre->next = a; 48 }49 return 0;50 }51