题目描述

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

首先,对于栈而言,是遵守FILO的准则的,即:First In Last Out.

PUSH(入栈)操作:堆栈指针加1,然后在堆栈的顶部加入一 个元素。POP(出栈)操作相反,出栈则先将栈堆指针所指示的内部ram单元中内容送入直接地址寻址的单元中(目的位置),然后再将堆栈指针减1。这两种操作实现了数据项的插入和删除。

为了实现队列的功能,先是创建两个栈 A 和 B
然后对栈A 进行填充, 因为涉及到一个问题,即根据栈的特性,假如栈A有1,2,3三个客户在排队,然后将栈A的客户填充进栈B,在栈B显示为[3,2,1],然后进行输出,所以最后邹静输出的顺序是正确的。
那么,问题在于如果栈B不为空的话,假如插入4号客户,然后第一个客户已经输出了,则顺序为变为[4,2,3],然后输出的顺序就开始出现了变化。

上代码:
# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stackA = []
        self.stackB = []
    def push(self, node):
        # write code here
        self.stackA.append(node)
    def pop(self):
        # return xx
        if self.stackB ==[]:
            while self.stackA:
                self.stackB.append(self.stackA.pop())
        return self.stackB.pop()