1. 程式人生 > 實用技巧 >040 兩個佇列生成一個棧

040 兩個佇列生成一個棧

想要實現兩個佇列生成一個棧,需要先了解佇列和棧的特性:

  • 佇列,先進先出。
  • 棧,後進先出。

使用兩個佇列生成一個棧的實現思路為:

程式碼實現如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #!/usr/bin/env python # -*- coding:utf-8 -*- import queue class Stack(object): def __init__(
self): self.master_queue = queue.Queue() self.minor_queue = queue.Queue() def push(self, value): """ 入棧 :param value: :return: """ self.master_queue.put(value) def pop(self): """ 出棧 :return: """ if self.master_queue.qsize() == 0: return None while True: if self.master_queue.qsize() == 1: value = self
.master_queue.get() break self.minor_queue.put(self.master_queue.get()) self.master_queue, self.minor_queue = self.minor_queue, self.master_queue return value obj = Stack() obj.push('武沛齊') obj.push('Alex') obj.push('肖峰') print(obj.pop()) print(obj.pop()) print(obj.pop())