《剑指offer》用两个栈实现队列

【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】

题目链接:?rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

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

思路

队列是一种先进先出的顺序表,而栈是一种先进后出的顺序表,想要用栈来实现队列的操作,首先一个栈是不够的,,我们需要两个栈,其中一个负责存放进队列的数字,另外一个负责出队列的操作。

每次插入操作,我们只需要将插入的数字放入进队操作的栈里,一旦遇到出队的操作,我们先看出队栈是否为空,不为空肯定就先删除出队栈的栈顶元素,如果空,我们就要把入堆栈的的数字全部转移到出队栈里面

class Solution{public:void push(int node){in.push(node);}int pop(){int ans;if(!out.empty()){ans = out.top();out.pop();}else{while(!in.empty()){out.push(in.top());in.pop();}ans = out.top();out.pop();}return ans;}private:stack<int> in;stack<int> out;};

版权声明:本文为博主原创文章,如果转载,请注明出处

青春在我的心中是苦涩的又是甘甜的,是精致的又是粗糙的,

《剑指offer》用两个栈实现队列

相关文章:

你感兴趣的文章:

标签云: