两个队列模拟一个栈

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

思路:

栈:后进先出
队列:先进先出

两个栈可以分为pop栈和push栈。每次push,把数据放到push栈中即可。重点是pop数据的时候。首先判断如果pop栈不为空,直接pop出去就好了。如果为空,从push栈中把数据一个个的pop到pop栈中。pop栈的数据相当于逆序的逆序后,所以pop栈就变成了先进先出的队列了。然后把pop栈数据pop出一个返回。

class Solution:
    def __init__(self):
        self.push_list = []
        self.pop_list = []
    
    def push(self, node):
        # write code here
        self.push_list.append(node)
        
    def pop(self):
        # return xx
        if len(self.pop_list)>0:
            return self.pop_list.pop()
        else:
            if len(self.push_list)>0:
                while self.push_list:
                    self.pop_list.append(self.push_list.pop())
                return self.pop_list.pop()
            else:
                return None
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.栈 1.1.栈的定义 栈(stack)是限定仅在表尾(栈顶 top)进行插入和删除操作的后进先出的线性表。 p...
    JonyFang阅读 5,245评论 0 21
  • 目录 基本性质 栈和队列的基本操作 双端队列和优先级队列 深度优先遍历(DFS)和广度优先遍历(BFS) 递归函数...
    kirito_song阅读 4,185评论 0 6
  • 一、栈 1.1 栈的实现 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。java没有栈这样的数据结...
    yjaal阅读 5,292评论 0 1
  • 栈 栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入,...
    Jack921阅读 5,424评论 0 5
  • 了解面试算法之 - 栈&队列&位运算 本文已经授权 玉刚写作平台 提供写作赞助版权声明:本文版权归微信公众号 玉刚...
    醒着的码者阅读 4,260评论 0 0