题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
python实现:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []#入队操作
self.stack2 = []#
def push(self, node):
# write code here
"""
总往stack1里入队
"""
self.stack1.append(node)
def pop(self):
# return xx
"""
stack2里不为空,就直接弹出即为结果,否则将stack1里的元素全部移到stack2,直至
stack1里只剩下一个,弹出即为结果
"""
if self.stack2:
return self.stack2.pop()
if len(self.stack1)==0:
raise Exception("pop error since queue is empty")
while len(self.stack1)>1:
self.stack2.append(self.stack1.pop())
return self.stack1.pop()
c++实现:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int result;
if(stack2.size()>0){
result = stack2.top();
stack2.pop();
return result;
}
//if(stack1.size()==0)
// throw new exception("queue is empty");
int tmp;
while(stack1.size()>1){
tmp = stack1.top();
stack1.pop();
stack2.push(tmp);
}
result = stack1.top();
stack1.pop();
return result;
}
private:
stack<int> stack1;
stack<int> stack2;
};