栈 Part I
双栈实现队列 双队列实现栈
双栈实现队列
法1:
private:
stack<int> inStack,outStack;
void in2out(){
while (!inStack.empty()){
outStack.push(inStack.top());
inStack.pop();
}
}
public:
MyQueue() {
}
void push(int x) {
inStack.push(x);
}
int pop() {
if(outStack.empty()){
in2out();
}
int x = outStack.top();
outStack.pop();
return x;
}
int peek() {
if(outStack.empty()){
in2out();
}
return outStack.top();
}
bool empty() {
return (inStack.empty() && outStack.empty());
}
双队列实现栈
225. 用队列实现栈
法1:
private:
queue<int> queue1,queue2;
public:
MyStack() {
}
void push(int x) {
queue2.push(x);
while(!queue1.empty()){
queue2.push(queue1.front());
queue1.pop();
}
swap(queue1,queue2);
}
int pop() {
/** Removes the element on top of the stack and returns that element. */
int r = queue1.front();
queue1.pop();
return r;
}
int top() {
return queue1.front();
}
bool empty() {
return queue1.empty();
}