程序员代码面试指南
----栈和队列
第一行输入一个整数N,表示对队列进行的操作总数。
下面N行每行输入一个字符串S,表示操作的种类。
如果S为"add",则后面还有一个整数X表示向队列尾部加入整数X。
如果S为"poll",则表示弹出队列头部操作。
如果S为"peek",则表示询问当前队列中头部元素是多少。
对于每一个为"peek"的操作,输出一行表示当前队列中头部元素是多少。
思路:
首先判断stack2是否为空,如果stack2为空,先将stack1中的元素出栈,然后按顺序压入stack2中
如果stack2非空,pop_front = stack2.pop(), front = stack2.top();
#include<iostream> #include<stack> #include<string> using namespace std; int main() { int N; stack<int> stack1, stack2; string tmp; cin >> N; for(int i = 0; i < N; i++){ cin >> tmp; if(tmp == "add") { int num; cin >> num; stack1.push(num); } else{ if(stack2.empty()){ while(!stack1.empty()){ stack2.push(stack1.top()); stack1.pop(); } } if(!stack2.empty()){ if(tmp == "peek") cout << stack2.top() <<endl; else if(tmp == "poll") stack2.pop(); } } } return 0; }
原文:https://www.cnblogs.com/lweccci/p/11440803.html