棧與佇列 如何閒情雅緻地理解棧實現佇列?

2021-10-04 04:41:19 字數 1259 閱讀 2016

直截了當講思路

思路:

我們了解的佇列操作思路(主要講出隊入隊操作)

例子:push(1) , push(2) , pop(), pop(), push(3)

如何利用棧來模擬佇列的操作呢?

所需條件: 兩個棧,stack1,stack2,乙個做出隊操作棧,乙個做入隊操作棧(詳細下面介紹)

入隊:入隊棧(stack1)直接push 其元素即可

出隊:出隊棧(stack2)無元素時,入隊棧(stack1)pop 出全部元素並逐個新增到出隊棧中,這樣出隊棧的出棧元素與佇列的正常順序就保持一致了,隨後如果出隊棧有元素時,執行出隊操作,直接pop出隊棧元素即可。

演示步驟:push(1) , push(2) , pop(), pop(), push(3)

棧的元素順序為從上至下:

- stack1: 1         stack2:empty

- stack1: 2,1 stack2:empty

- stack1: empty stack2:1,2

-》 出隊後 2

- stack1: empty stack2:empty

- stack1: 3 stack2:empty

躁人之詞多,話多傷氣 ,我就不廢話了,上**

測試用例:

//兩個棧實現乙個佇列

template

<

typename t>

class

cqueue

;template

<

typename t>

void cqueue::(

const t &element)

template

<

typename t>

t cqueue

::deletehead()

}if(stack2.

size()

<=0)

std::cerr<<

"current queue is empty!"

top();

stack2.

pop();

return head;

}

棧與佇列的理解

繼資料結構學完了鍊錶之後,我們開始了棧與佇列的學習,相比較於上一章的鍊錶,這一張相比沒有上一張那麼難,下面總結一下我對棧與佇列的理解與感悟。棧與佇列的共同點 棧和佇列的訪問是受限制的,即在特定時刻只有乙個資料項可以被讀取或刪除。棧的特點 後進先出 佇列的實現 與棧一樣,可以用陣列實現也可以使用鍊錶實...

資料結構專題 棧與佇列之鏈棧及其Java實現

和普通的線性表一樣,我們可以選擇用單鏈或者是雙鏈來實現這個資料結構。由於棧只能夠在棧頂進行入棧和出棧操作,因此乙個只含有棧頂節點的單鏈表就可以輕鬆實現它了。下面我們就來一起實現這個鏈式儲存的鏈棧吧 棧頂節點,不儲存元素,只用來指向棧頂的元素 private node stacktop private...

資料結構 棧與佇列理解與實現

佇列棧 只允許在一端進行插入或刪除操作的線性表。通過只操作top從而實現先進後出的特點。define maxsize 50 定義棧中元素的最大個數 typedef structsqstack include define maxsize 50 定義棧中元素的最大個數 using namespace ...