码迷,mamicode.com
首页 > 编程语言 > 详细

剑指offer用两个栈实现队列python

时间:2019-11-02 12:11:38      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:none   出栈   app   return   __init__   存储   应该   需要   类型   

题目描述

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

思路

定义两个栈stack1,stack2,stack1负责存数据,stack2负责辅助完成队列的弹出。stack1维持一个队列的顺序,stack1栈底数据是最先压入的,弹出的时候,应该是最先被弹出的。我们弹出的时候,把stack1栈顶数据依次压入stack2,这样的话,最先在stack1栈底的数据会到stack2的栈顶,用stack2的pop方法自然就弹出该数据。只是要注意,弹出之后,为了防止新进入stack1的元素再压入stack2到stack2表面,破坏了队列的顺序,每一次stack2弹出栈顶元素后,需要再把stack2的元素重新压回到stack1里面。

push操作:按栈存储压入stack1

pop操作:如果stack1为空,错误

     stack1不为空,将stack1全部压入stack2,再用pop方法弹出,再把stack2全部压入stack1

代码

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
        
    def push(self, node):
        self.stack1.append(node)
        
    def pop(self):
        if self.stack1 is None:
            return None
        while self.stack1:
            self.stack2.append(self.stack1.pop())
        temp = self.stack2.pop()
        while self.stack2:
            self.stack1.append(self.stack2.pop())
        return temp

 

剑指offer用两个栈实现队列python

标签:none   出栈   app   return   __init__   存储   应该   需要   类型   

原文地址:https://www.cnblogs.com/wangzhihang/p/11780964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!