①用数组queue来实现这个队列
#include<stdio.h>
const int maxn = 50;
int queue[maxn];
int main()
{
int n, front, rear;
scanf("%d", &n);
front = 0;
rear = n;
for (int i = 0; i < n; i++)//初始化队列
{
queue[i] = i + 1;
}
while (front < rear)//当队列非空
{
printf("%d ", queue[front++]);
queue[rear++] = queue[front++];//队首元素移动到队尾
}
return 0;
}
②利用C++的STL队列实现
#include<cstdio>
#include<queue>
using namespace std;
queue<int> q;
int main()
{
int n;
scanf("%d", &n);
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;
}