python算法:如何用两个栈模拟队列操作

class Stack():
    def __init__(self):
        self.items = []

    def empty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)

    def peek(self):
        if not self.empty():
            return self.items[-1]
        else:
            return None

    def pop(self):
        if len(self.items) > 0:
            return self.items.pop()
        else:
            return None

    def push(self,item):
        self.items.append(item)

class MyStack:
    def __init__(self):
        #用来存储栈中元素
        self.A = Stack()
        #用来存储当前栈中最小元素
        self.B = Stack()

    def push(self,data):
        self.A.push(data)

    def pop(self):
        if self.B.empty():
            while not self.A.empty():
                self.B.push(self.A.peek())
                self.A.pop()
        fist = self.B.peek()
        self.B.pop()
        return fist

if __name__ == '__main__':
    stack = MyStack()
    stack.push(1)
    stack.push(2)
    print(f'队列首元素{stack.pop()}')
    print(f'队列首元素{stack.pop()}')

猜你喜欢

转载自blog.csdn.net/weixin_43697214/article/details/115145182