040 兩個佇列生成一個棧
阿新 • • 發佈:2020-12-31
想要實現兩個佇列生成一個棧,需要先了解佇列和棧的特性:
- 佇列,先進先出。
- 棧,後進先出。
使用兩個佇列生成一個棧的實現思路為:
程式碼實現如下:
?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())
|