题解 | #用两个栈实现队列#

用两个栈实现队列

https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        if len(self.stack2) > 0:
            self.stack1.append(self.stack2.pop(-1))
        self.stack1.append(node)
    def pop(self):
        if len(self.stack1) == 0 and len(self.stack2) == 0:
            print("Your stack is empty!")
            return None
        elif len(self.stack1) > 0:
            for _ in range(len(self.stack1)):
                self.stack2.append(self.stack1.pop(-1))
        return self.stack2.pop(-1)

stack1用来正常插入元素,stack2作为辅助,帮助弹出现存元素中第一个进栈的元素。

push时,先检查stack2中是否为空,不为空需要将元素按照栈的方式重新装入stack1,装入后还是原来的顺序不变。然后再插入新元素,因为新元素要最后一个进栈。

pop时,先检查stack1和stack2是否都为空,为空则报错。如果stack1中不为空,则按照栈的操作一个一个弹出stack1的元素装入stack2,最后弹出stack2最后装入的元素,即为所封装的队列的第一个元素。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务