7-22 堆栈模拟队列 (25分)
AC代码
#include <iostream>
#include <cstdio>
#include <stack>
#include <algorithm>
using namespace std;
stack<int> s1, s2;
int main(){
int m, n, num;
scanf("%d%d", &m, &n);
if (m > n) swap(m, n);
char ch;
getchar();
while (scanf("%c", &ch) && ch != 'T'){
if (ch == ' ') continue;
if (ch == 'A'){
scanf("%d", &num);
if (s1.size() < m) s1.push(num);
else if (s1.size() == m){
if (s2.empty()){
while (!s1.empty()){
s2.push(s1.top());
s1.pop();
}
s1.push(num);
}
else printf("ERROR:Full\n");
}
}
else {
if (!s2.empty()){
printf("%d\n", s2.top());
s2.pop();
}
else if (!s1.empty()){
while (!s1.empty()){
s2.push(s1.top());
s1.pop();
}
printf("%d\n", s2.top());
s2.pop();
}
else printf("ERROR:Empty\n");
}
}
return 0;
}