用兩個棧模擬佇列,首先,要清楚兩個資料結構的特點。棧是先進後出而佇列是先進先出。顯然,乙個棧是沒有辦法實現佇列的功能,這裡我們需要乙個插入棧,和乙個彈出棧。插入棧執行佇列的插入功能,彈出棧執行佇列的彈出功能。
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的唯一元素後,再存...