棧和佇列 由兩個棧組成佇列

2021-08-08 21:53:33 字數 904 閱讀 5425

【題目】

編寫乙個類,用兩個棧實現佇列,支援佇列的基本操作(add, poll, peek)。

【基本思路】

使用兩個棧stackpush、stackpop,stackpush棧負責壓入資料、stackpop棧負責將stackpush中的元素逆序,用於獲取或者彈出棧頂元素。但是有乙個規則:stackpop只有為空的時候才再次向stackpush棧索要元素,而且,必須一次拿走stackpush中當前的所有元素。

【**實現】

#python3.5

class

twostackqueue:

stackpush =

stackpop =

defadd(self, newnum):

defpoll

(self):

ifnot self.stackpush and

not self.stackpop:

raise exception("queue is empty!")

elif

not self.stackpop:

while self.stackpush:

return self.stackpop.pop()

defpeek

(self):

ifnot self.stackpush and

not self.stackpop:

raise exception("queue is empty!")

elif

not self.stackpop:

while self.stackpush:

return self.stackpop[-1]

由兩個棧組成佇列

說明 本文是左程雲老師所著的 程式設計師面試 指南 第一章中 由兩個棧組成的佇列 這一題目的c 復現。感謝左程雲老師的支援。題目 編寫乙個類,用兩個棧實現佇列,支援佇列的基本操作 push pop front 思路 乙個棧作為資料的壓如棧,乙個棧作為資料的彈出棧。編譯環境 centos6.7 x86...

由兩個棧組成的佇列

用兩個棧實現佇列,支援佇列的基本操作。第一行輸入乙個整數n,表示對佇列進行的操作總數。下面n行每行輸入乙個字串s,表示操作的種類。如果s為 add 則後面還有乙個整數x表示向佇列尾部加入整數x。如果s為 poll 則表示彈出佇列頭部操作。如果s為 peek 則表示詢問當前佇列中頭部元素是多少。對於每...

演算法題 棧和佇列 02 由兩個棧組成的佇列

我們知道棧是先進後出的,而佇列是先進先出。所以我們用兩個棧正好能把順序反過來實現類似佇列的操作。具體實現時是乙個棧作為壓入棧,在壓入資料時只往這個棧中壓入,記為stackpush 另乙個棧只作為彈出棧,在彈出資料時只從這個棧彈出,記為stackpop。因為資料壓入棧的時候,順序是先進後出的。那麼只要...