STL队列,FIFO表
FIFO表示先进先出。
#include<stdio.h>
int a[50];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i<50;i++)
a[i]=0;
for(i=0;i<n;i++)
a[i]=i+1; //初始化
int q=0,w=n;
while(q<w) //当队列非空
{
printf("%d ",a[q]); //打印每个被踢的元素
a[q]=0; //队首为0
a[w++]=a[++q]; //队尾等于队首
a[q++]=0; //队首为0;
}
}
如果用c++的话
#include<queue>
using namespace std;
int main()
{
int n;
queue<int> q;
for(int i=0;i<n;i++)
q.push(i+1); //初始化
while(!q.empty()) //当队列非空
{
printf("%d ",q.front()); //打印每个被踢的元素
q.pop(); //踢掉首元素
q.push(q.front()); //队尾等于队首
q.pop(); // //踢掉首元素
}
return 0;
}