用两个栈实现队列

来源:互联网 发布:apache maven 3.0.3 编辑:程序博客网 时间:2024/04/28 13:40

仅作为个人笔记

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


C++

class Solution{public:    void push(int node) {        stack1.push(node);    }    int pop() {            if(stack2.empty()){            while(!stack1.empty()){                stack2.push(stack1.top());                stack1.pop();            }           }      int a=stack2.top();     stack2.pop();     return a;    }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);    }    public int pop() throws Exception    {        if(stack2.size() <= 0)        {            while(stack1.size() > 0)            {                stack2.push(stack1.pop());            }        }        if(stack2.size() == 0)            throw new Exception("queue is empty");        int head = stack2.pop();        return head;    }}

Python

# -*- coding:utf-8 -*-class Solution:    def __init__(self):        self.stack1 = []        self.stack2 = []    def push(self,node):        self.stack1.append(node)    def pop(self):        if not self.stack2:            while(len(self.stack1) > 0):                self.stack2.append(self.stack1.pop())        if(len(self.stack2) == 0):            throw_error        return self.stack2.pop()
0 0
原创粉丝点击