zoukankan      html  css  js  c++  java
  • 用两个栈实现队列

    题目描述

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

    思路

    首先要明确栈和队列的特性,栈是后入先出的数据类型,队列是先进先出的数据类型,那么就可以用两个栈,一个存储新的push进队列的数据,另一个栈用来pop出队头的数据,push很简单,直接利用栈的特性append进去就可以了,那么pop怎么办呢,需要把队头(也就是最先push的数据)pop出去。有一个办法,就是假如

    1、栈2没有数据,而栈1有数据的话,那就把栈1的数据全pop到栈2去,然后直接用栈2pop

    2、栈1和栈2都没有数据,那就返回None

    3、栈2有数据的话,直接pop栈2的数据

    这样能保证栈2的数据都是“老数据”,且栈2的尾数据一定是最先push到所谓队列的那个队头;而栈1的数据都是“新push的数据”

    解答

    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 not self._stack1:
                return None
            else:
                while self._stack1:
                    self._stack2.append(self._stack1.pop())
                return self._stack2.pop()
    人生苦短,何不用python
  • 相关阅读:
    班级派团队项目小计(七)
    班级派团队项目小计(六)
    班级派团队项目小计(五)
    班级派团队项目小计(四)
    班级派团队项目小计(三)
    场景描述思密达~
    班级派团队项目小计(二)
    班级派团队项目小计(一)
    构建之法阅读笔记02
    JS获取坐标
  • 原文地址:https://www.cnblogs.com/yqpy/p/9557704.html
Copyright © 2011-2022 走看看