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

来源:互联网 发布:teambition类似软件 编辑:程序博客网 时间:2024/06/07 09:47
思路:由于队列是先进先出的,而栈是先进后出的,所以要用2个栈来实现队列的入队出队功能,队列的入队功能与栈的一样,出队时,先将第一个栈中的元素全部弹出,并倒入到第二个栈中,将第二个栈中栈顶元素弹出,并将stack2中剩下的元素倒回到stack1中,即实现一次出队
class Solution{public:    void push(int node) {        stack1.push(node);    }    int pop() {        while(!stack1.empty())        {            stack2.push(stack1.top());            stack1.pop();        }        int a=stack2.top();        stack2.pop();         while(!stack2.empty())        {            stack1.push(stack2.top());            stack2.pop();        }           return a;    }private:    stack<int> stack1;    stack<int> stack2;};

python 方法:

def __init__(self):        self.stack1=[]        self.stack2=[]    def push(self, node):        self.stack1.append(node)    def pop(self):        if self.stack2==[]:            while self.stack1:                self.stack2.append(self.stack1.pop())        return self.stack2.pop()        while self.stack2:            self.stack1.append(self.stack2.pop())


阅读全文
0 0
原创粉丝点击