順序迴圈結構(迴圈佇列)模擬約瑟夫環
void InQ(int Q[],int x);
void OutQ(int Q[]);
int GetHead(int Q[]);
int rear,front;
const int N=100;//支援100以下個的資料
void main()
{
int n,m;
cout<<"請輸入人數:";
cin>>n;
cout<<"請輸入數到多少出列:";
cin>>m;
int Q[N];
front=0;
rear=0;
int count=0;
for(int i=1;i<=n;i++)
{
InQ(Q,i);
}
while(rear!=front)
{
int a=GetHead(Q);
OutQ(Q);
InQ(Q,a);
count++;
if((count+1)==m)
{
int b=GetHead(Q);
OutQ(Q);
cout<<b;
count=0;
}
}
}
void InQ(int Q[],int x)
{
if((rear+1)%N==front)
cout<<"隊滿";
else
{
rear=(rear+1)%N;
Q[rear]=x;
}
}
void OutQ(int Q[])
{
if(rear==front)
cout<<"隊空";
else
front=(front+1)%N;
}
int GetHead(int Q[])
{
if(rear==front)
return NULL;
else{
return Q[(front+1)%N];
}
}