直截了當講思路
思路:
我們了解的佇列操作思路(主要講出隊入隊操作)
例子: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 ...