//循环链表
#include<stdio.h>
struct Monkey{
int ID;
Monkey * next;
};
int main()
{
Monkey *link,*monkey,*lastMonkey;
int totalMonkeys,stride,count;
printf("input total:\n");
scanf("%d",&totalMonkeys);
printf("input outNumber:\n");
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("出队的顺序:\n");
while(link!=NULL){
if(link->next==link){
printf("%4d\n",link->ID);
delete link;
break;
}
if(count==stride-1){
monkey=link->next;
link->next=monkey->next;
printf("%4d\n",monkey->ID);
delete monkey;
count=0;
}
link=link->next;
count++;
}
return 0;
}
循环链表:约瑟夫问题
最新推荐文章于 2020-09-15 01:34:37 发布