欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 隊列實現棧

阮建安2年前8瀏覽0評論

Python是一種強大的編程語言,在數據結構方面有著廣泛的應用。我們知道,隊列和棧是兩種常見的數據結構,它們都有自身的特點和用途。Python中常用的隊列模塊是queue,而棧通常通過列表來實現。但是,我們也可以通過隊列模塊來實現棧,本文就將介紹如何使用Python隊列模塊來實現棧。

from queue import Queue
class Stack:
def __init__(self):
self.q1 = Queue()
self.q2 = Queue()
def push(self, val):
self.q1.put(val)
def pop(self):
if self.q1.qsize() == 0:
return None
while self.q1.qsize() >1:
self.q2.put(self.q1.get())
res = self.q1.get()
self.q1, self.q2 = self.q2, self.q1
return res
def peek(self):
if self.q1.qsize() == 0:
return None
while self.q1.qsize() >1:
self.q2.put(self.q1.get())
res = self.q1.get()
self.q2.put(res)
self.q1, self.q2 = self.q2, self.q1
return res
def size(self):
return self.q1.qsize()

代碼中定義了一個名為Stack的類,其中包括了push,pop,peek和size這四個方法。在類的初始化中,我們創建了兩個隊列q1和q2,q1用于儲存棧中的元素,q2用于輔助push和pop操作。在push方法中,我們直接將新的元素加入到q1的隊尾。在pop方法中,我們首先把q1的元素都倒入到q2中,直到q1中只剩一個元素時,我們彈出該元素作為結果,然后將q1和q2互換隊列,以便下次壓入元素。peek方法與pop方法類似,但是我們需要在彈出元素后把它再次壓入隊尾。size方法則是返回q1的元素個數。

通過上述代碼,我們可以成功地用Python隊列模塊來實現棧。這種方法可以讓我們更好地理解隊列和棧之間的聯系,也為我們提供了一種新的實現棧的方式。