#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 99
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int front,rear;
} ringQueue;
ringQueue *rq;
void InitQueue(ringQueue *&rq)
{
rq=(ringQueue *)malloc (sizeof(ringQueue));
rq->front=rq->rear=0;
}
void DestroyQueue(ringQueue *&rq)
{
rq->front=rq->rear;
}
void AddMonkey(ringQueue *&rq,ElemType e)
{
rq->data[rq->rear]=e;
rq->rear=(rq->rear+1)%MAXSIZE;
}
void MonkeyOut(ringQueue *&rq,int n)
{
while(rq->data[rq->front]==0)
{
rq->front=(rq->front+1)%MAXSIZE;
}
for (int j=0;j<n-1;j++)
{
rq->front=(rq->front+1)%MAXSIZE;
if (rq->data[rq->front]==0)
{
do
{
rq->front=(rq->front+1)%MAXSIZE;
}while(rq->data[rq->front]==0);
}
}
rq->data[rq->front]=0;
rq->front=(rq->front+1)%MAXSIZE;
}
main(){
int e;
int m,n,t;
InitQueue(rq);
printf("请输入猴子数量:\n");
scanf("%d",&m);
printf("请选择第几只猴子跳出圈外:\n");
scanf("%d",&n);
t=m;
for (int x=0;x<MAXSIZE;x++)
{ rq->data[rq->front]=0;
rq->front=(rq->front+1)%MAXSIZE;
}
for(int i=1;i<=m;i++)
{
AddMonkey(rq,1);
}
while(t>1){
MonkeyOut(rq,n);
t--;
}
while(rq->data[rq->front]==0)
{
rq->front=(rq->front+1)%MAXSIZE;
}
printf("\n猴子大王是%d号猴子",rq->front+1);
DestroyQueue(rq);
}