NC76用两个栈实现队列
NC76用两个栈实现队列
- 1、题目描述:
-3、 设计思想:
详细操作流程看下图:
-5、代码:
c++版本:
class Solution
{
public:
void push(int node) {
stack1.push(node);//直接入栈1
}
int pop() {
/*如果栈2为空就代表没有进行过出队操作
所以需要把栈1里面的元素全部压入栈2中,进行模拟队的出队操作
*/
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
}
}
/*如果栈2不为空就代表之前的操作已经使用过出队操作,直接取出栈2的栈顶
元素就是当前出队的那个元素*/
int res = stack2.top();
stack2.pop();
return res;
}
private:
stack<int> stack1;//用来模拟队列的压入操作
stack<int> stack2;//用来模拟队列的弹出操作
};
Java版本:
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();//用来模拟队列的压入操作
Stack<Integer> stack2 = new Stack<Integer>();//用来模拟队列的弹出操作
public void push(int node) {
stack1.push(node);//直接入栈1
}
public int pop() {
/*如果栈2为空就代表没有进行过出队操作
所以需要把栈1里面的元素全部压入栈2中,进行模拟队的出队操作
*/
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
/*如果栈2不为空就代表之前的操作已经使用过出队操作,直接取出栈2的栈顶
元素就是当前出队的那个元素*/
return stack2.pop();
}
}
Python版本:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []#用来模拟队列的压入操作
self.stack2 = []#用来模拟队列的弹出操作
def push(self, node):
# write code here
self.stack1.append(node) #直接入栈1
def pop(self):
# return xx
'''
如果栈2为空就代表没有进行过出队操作
所以需要把栈1里面
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
C++岗位面试真题宝典 文章被收录于专栏
整篇专刊共分为6章,涵盖C++基础、C++操作系统、C++计算机网络、C++数据库、C++设计模式与算法面试真题。 购买须知 1、专刊报名后,在个人主页-学习-已购-专刊即可快速进入学习。2、专刊为虚拟商品,交付形式为图文,一经购买,即可解锁内容,所以概不退款。 3、专刊版权归本牛客所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任。
美的集团公司福利 814人发布