兩個(gè)棧 Stack 實(shí)現(xiàn)一個(gè)隊(duì)列 Queue
入隊(duì):元素進(jìn)棧A
出隊(duì):先判斷棧B是否為空,為空則將棧A中的元素pop出來(lái)并push進(jìn)棧B想虎,再將棧B的第一個(gè)元素pop出棧汰翠,如不為空則直接從棧B中pop第一個(gè)元素出棧
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()
兩個(gè)隊(duì)列 Queue 實(shí)現(xiàn)一個(gè)棧 Stack
入隊(duì):元素隊(duì)列A
出隊(duì):判斷如果隊(duì)A只有一個(gè)元素信峻,則直接出隊(duì)。否則卧土,把隊(duì)A中的元素出隊(duì)并入隊(duì)B,直到隊(duì)A中只有一個(gè)元素像樊,再直接出隊(duì)
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()