棧的相關演算法問題 如何用兩個棧模擬佇列操作

2021-10-09 02:50:52 字數 1273 閱讀 2535

用兩個棧模擬佇列,首先,要清楚兩個資料結構的特點。棧是先進後出而佇列是先進先出。顯然,乙個棧是沒有辦法實現佇列的功能,這裡我們需要乙個插入棧,和乙個彈出棧。插入棧執行佇列的插入功能,彈出棧執行佇列的彈出功能。

class

stack()

:def

__init__

(self)

: self.items=

defis_empty

(self)

:return

len(self.items)==0

defpop

(self)

:if self.is_empty():

print

("棧空了"

)return

none

else

:return self.items.pop(

)def

push

(self,data)

:def

peek

(self)

:if self.is_empty():

return

none

else

:return self.items[

len(self.items)-1

]class

myqueue()

:def

__init__

(self)

: self.rustack=stack(

) self.chustack=stack(

)def

enqueue

(self,data)

: self.rustack.push(data)

defpopqueue

(self)

:if self.chustack.is_empty():

while

not self.rustack.is_empty():

self.chustack.push(self.rustack.peek())

self.rustack.pop(

) first=self.chustack.peek(

) self.chustack.pop(

)return first

if __name__==

"__main__"

: s=myqueue(

) s.enqueue(1)

s.enqueue(2)

s.popqueue(

)

如何用兩個棧實現乙個佇列

問題 如何用兩個棧實現乙個對列的功能?思路 從棧a入佇列,從棧b出佇列。佇列的2個最重要的操作,入佇列,出佇列。入佇列 從棧a入佇列。出佇列 分兩種情況 如果棧b不為空,直接彈出。如果棧b為空,將棧a中的資料全部彈入棧b中,再從棧b彈出資料 實現如下 queuebystack.cpp 定義控制台應用...

如何用兩個棧模擬乙個佇列

這是當年 資料結構 課的乙個問題,拿出來鞏固一下。使用兩個棧,其中乙個棧stack1負責新增元素,另外乙個棧stack2負責彈出元素。分兩種情況,如果stack2不空則直接彈出,否則逐個彈出stack1中的元素放入stack2中,然後再從stack2中彈出乙個元素。package algorithm...

教你如何用兩個佇列實現乙個棧

1.具體思路 1.準備兩個佇列ab 2.a用來執行入佇列 每次入佇列時只要放入a即可 3.出棧操作時,在a中元素保留乙個的情況下將a中元素依次入佇列b,最後直接讓a中的剩下的那乙個元素出佇列即可,執行完,交換ab佇列 方便下次出棧 4,取棧頂元素操作時,和出棧操作一樣,不過訪問完a的唯一元素後,再存...