【剑指offer】---用两个栈实现队列(Python)

题目描述:

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

CODE:

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        #  使用列表代替栈结构,现在列表只能先进后出,进用append(),出用pop().
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        # write code here
        self.stack1.append(node) # 入队直接把元素添加到第一个栈里面
    def pop(self):
        # return xx
        #  出队先出第一个入队的元素,先把stack1里面的元素全部弹出并依次压入stack2.这样直接倒置了元素顺序。然后每次弹出stack2就是入队的顺序了。
        if self.stack2 == []:  # 先判断stack2是否为空,若为空则继续判断stack1是否为空,如果1,2都是空,返回None。若1空,2不空,则直接弹出2的元素。
            if self.stack1 == []:
                return None
            else:  # 1不空,2空,则将1的内容依次弹出压入2中
                for i in range(len(self.stack1)):
                    self.stack2.append(self.stack1.pop())
        return self.stack2.pop()

猜你喜欢

转载自blog.csdn.net/m0_38109046/article/details/88256722
今日推荐