两个栈 Stack 实现一个队列 Queue
入队:元素进栈A
出队:先判断栈B是否为空,为空则将栈A中的元素pop出来并push进栈B,再将栈B的第一个元素pop出栈,如不为空则直接从栈B中pop第一个元素出栈
class newQueue():
def __init__(self):
self.stack_A = Stack()
self.stack_B = Stack()
def enqueue(self, node):
self.stack_A.push(node)
def dequeue(self):
if self.stack_A = = [ ]
return None
if self.stack_B =[ ]
for i in range(len(self.stack_A)):
self.stack_B.push(stack_A.pop())
return self.stack_B.pop()
两个队列 Queue 实现一个栈 Stack
入队:元素队列A
出队:判断如果队A只有一个元素,则直接出队。否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队
class newStack():
def __init__(self):
self.queue_A = Queue()
self.queue_B = Queue()
def push(self, node):
self.queue_A.enque(node)
def pop(self):
if self.queue_A = = [ ]
return None
while len(queue_A)>1
queue_B.enqueue(queue_A.dequeue())
self.queue_A, self.queue_B = self.queue_B, self.queue_A
return queue_B.dequeue()