之前按照书上写的,有一个测试点过不去。我也不知道为啥。。有知道的同学请在下方告诉我一声~谢谢~
原先代码:
/*解密QQ号---队列*/
#include <stdio.h>
struct
queue
{
int
data[100005];
int
head;
//队首
int
tail;
//队尾
};
int
main()
{
struct
queue q;
int
i;
q.head = 0;
q.tail = 0;
int
n;
scanf
(
"%d"
,&n);
for
(i = 0;i < n;i++)
{
scanf
(
"%d"
,&q.data[q.tail]);
q.tail++;
}
while
(q.head<q.tail)
{
//输出队首并将队首移出
printf
(
"%d "
,q.data[q.head]);
q.head++;
//先将新队首移到队尾
q.data[q.tail] = q.data[q.head];
q.tail++;
q.head++;
//再将队首移出
}
return
0;
}
后来书上有提示(啊哈算法)可以使用C++的STL库,直接使用队列,代码如下:
/*解密QQ号---队列*/
#include<iostream>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include<algorithm>
using
namespace
std;
int
a[100005];
int
main()
{
queue<
int
>q;
//队列
int
n;
scanf
(
"%d"
,&n);
for
(
int
i = 0;i < n;i++)
{
scanf
(
"%d"
,&a[i]);
q.push(a[i]);
}
while
(q.size())
//q.size()返回队列中元素的个数
{
printf
(
"%d "
,q.front());
//获取队首元素
q.pop();
//移除第一个元素
q.push(q.front());
//加入元素在已有元素的后面
q.pop();
//移除
}
return
0;
}
附上C++STL队列的详细使用方法: