队列与栈-005-用两个栈实现队列

文章目录

  • 题目描述
  • 分析
  • 代码

题目描述

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

思考用两个队列实现栈

两个队列实现栈

分析

  • 栈1(入队栈):stack1
  • 栈2(出队栈):stack2
  1. 入队操作:直接往入队栈里Push入队。
  2. 出队操作:
    1. 自查出队栈里有没有元素,有元素直接Pop出队。
    2. 自查出队栈里有没有元素,没有元素则将入队栈里的元素全部导入到出队栈里,再从出队栈里Pop出队。

队列与栈-005-用两个栈实现队列_第1张图片

代码

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        # write code here
        self.stack1.append(node)
        
        
    def pop(self):
        # return xx
        if self.stack2:
            return self.stack2.pop()
        elif self.stack1:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
            
            return self.stack2.pop()
        else:
            return None

你可能感兴趣的:(数据结构与算法)