面试15之用两个栈去实现一个队列

来源:互联网 发布:电脑软件限制策略 编辑:程序博客网 时间:2024/05/29 04:35

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

<分析>:

入队:将元素进栈A

出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;

 如果不为空,栈B直接出栈。


#include<iostream>using namespace std;#include<stack>class Solution{public:void Push(int node){stack1.push(node);}int Pop(){if(stack2.empty()){while(!stack1.empty())//这里要注意,要一次性的把stack1中的元素都导入到stack2中,要不然元素的相对应位置就会发生变化。{int temp = stack1.top();stack2.push(temp);stack1.pop();}}int temp = stack2.top();stack2.pop();return temp;}private:stack<int> stack1; //这个栈用来保存元素stack<int> stack2;//这个栈用来弹出元素};void test(){Solution s;s.Push(0);s.Push(1);s.Push(3);s.Push(7);s.Push(8);cout << s.Pop()<<endl;;}int main(){ test();cout << "hello..."<<endl;return 0;}


0 0
原创粉丝点击