使用两个栈实现一个队列

131 阅读1分钟

1. 题目

www.nowcoder.com/questionTer…

image.png

2. 考点

栈的数据结构为 先进后出
队列的数据结构 先进先出

3. 核心代码

class Queue(object):
    def __init__(self):
        self.stack_in = []
        self.stack_out = []

    def add(self, num):
        self.stack_in.append(num)

    def in2out(self):
        tmp = []
        if self.stack_out:
            tmp = self.stack_out[:]
            self.stack_out = []
        while self.stack_in:
            self.stack_out.append(self.stack_in.pop())
        self.stack_out.extend(tmp)

    def poll(self):
        self.in2out()
        return self.stack_out.pop()

    def peek(self):
        self.in2out()
        return self.stack_out[-1]


def inp():
    q = Queue()
    n = int(input())
    for _ in range(n):
        v = input()
        if v.startswith('add'):
            num = int(v.split(' ')[1])
            q.add(num)
        elif v.startswith('poll'):
            q.poll()
        elif v.startswith('peek'):
            print(q.peek())


if __name__ == '__main__':
    inp()