//循环链表 #include<stdio.h> struct Monkey{ int ID; Monkey * next; }; int main() { Monkey *link,*monkey,*lastMonkey; int totalMonkeys,stride,count; printf("input total: "); scanf("%d",&totalMonkeys); printf("input outNumber: "); scanf("%d",&stride); link=NULL; for(int i=0;i<totalMonkeys;i++){ monkey=new Monkey; monkey->ID=i+1; if(link==NULL) link=lastMonkey=monkey; else{ lastMonkey->next=monkey; lastMonkey=monkey; } } lastMonkey->next=link; count=1; printf("出队的顺序: "); while(link!=NULL){ if(link->next==link){ printf("%4d ",link->ID); delete link; break; } if(count==stride-1){ monkey=link->next; link->next=monkey->next; printf("%4d ",monkey->ID); delete monkey; count=0; } link=link->next; count++; } return 0; }