本题重新定义队列出队的操作:队首出队的数字重新在队尾入队。
例:队列中有1 2 3
三个数字,现要求队首出队,则1
从队首出队,同时1
从队尾入队,队列变成2 3 1
。
入队的顺序为1,2,3,4......n,同时给一个二进制字符串,1代表出队操作,0代表入队操作。
输入格式:
在第一行有两个数字n,m(n<=100,n<m),其中n为入队的数字个数,m代表操作数
接下来m行,每行一个数字,1或者0,代表不同的操作
输出格式:
输出操作后队列的每个数字,数字间以空格分隔,最后一个数字后没有空格
仔细思考一下发现这道题还是蛮简单的,下面是我的代码
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int m, n;
cin >> n >> m;
queue<int>q;
int num1=1,num2=1;
char c;
while (m > 0)
{
cin >> c;
if (c == '1')
{
int current = q.front();
q.pop();
q.push(current);
}
else
{
q.push(num2);
num2++;
}
m--;
}
while (q.size()>1)
{
cout << q.front()<<" ";
q.pop();
}
cout << q.front();
system("pause");
return 0;
}