3. 数据结构与算法:堆栈&队列

两个栈 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()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容