题目描述
用两个栈来实现一个队列,完成队列的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()
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()