剑指offer之用两个栈实现队列
来源:互联网 发布:macbook绘画软件 编辑:程序博客网 时间:2024/06/01 09:24
题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
用一个栈Stack1用作存储,Stack2用作缓存,当进入队列时,直接将值压入stack1,出队时,先将Stack1的Stack1.size()-1个值压入stack2,然后取stack1的唯一值即为出站值。
入栈时,有一个问题是如果stack2中初始有值,则先将stack2中的值压入stack1。
代码
class Solution{public: void push(int node) { while(!stack2.empty()){//satck2有值时,直接压入stack1 stack1.push(stack2.top()); stack2.pop(); } stack1.push(node); } int pop() { while(stack1.size()>1){//栈1出站个数为stack1.size()-1 stack2.push(stack1.top()); //将stack2作为缓冲区 stack1.pop(); } int value=stack1.top(); stack1.pop(); /*while (!stack1.empty()){ stack2.push(stack1.top()); stack1.pop(); } int value = stack2.top(); stack2.pop();*/ while(!stack2.empty()){//将stack2中的数据重新压缩stack1 stack1.push(stack2.top()); stack2.pop(); } return value; }private: stack<int> stack1; stack<int> stack2;};
阅读全文
0 0
- 剑指Offer之用两个栈实现队列
- 剑指Offer之 - 用两个栈实现队列
- 剑指offer之用两个栈实现队列
- 剑指offer系列之五:用两个栈实现队列
- 剑指offer面试题之用两个栈实现队列
- 剑指offer(二)之用两个栈实现队列
- (五)剑指offer之用两个栈实现队列
- 剑指offer之用两个栈实现队列
- 剑指offer之用两个栈实现队列
- 剑指offer之四---用两个栈实现队列
- [剑指offer]用两个栈实现队列
- 【剑指offer】用两个栈实现队列
- 剑指offer--用两个栈实现队列
- 剑指Offer-用两个栈实现队列
- 剑指offer:用两个栈实现队列
- 《剑指offer》用两个栈实现队列
- 用两个栈实现队列(剑指offer)
- 剑指 offer:用两个栈实现队列
- HDU
- docker常用命令
- 【一点感悟】如何学习一项技术?
- Seeeduino + TFT(带触摸)
- Python Matplotlib实现三维/四维数据的柱状图绘制
- 剑指offer之用两个栈实现队列
- VMware 虚拟机克隆 CentOS 6.5 之后,网络配置问题的解决方案
- JavaScript之客户端存储
- Java语言汉语转换为拼音
- MySQL安装
- HDU 2057
- 数据结构入门1—Treap
- 面试题分享
- 八数码 二 康托哈希