用兩個棧模擬佇列操作

2021-07-05 15:29:06 字數 455 閱讀 7940

棧是先進後出,佇列是先進先出操作,用兩個棧可以實現佇列操作。先把資料壓入其中乙個棧,棧頂元素最後進入,然後在把棧裡元素壓入另外乙個棧,則原來棧頂元素變為棧底元素,原來棧底元素變為棧頂元素,然後對第二個棧彈出操作,則彈出的就是最先進入第乙個棧的元素了,這就實現了佇列操作,先進先出。

#include

using namespace std

;struct stacks1,s2;

struct queueq;

int main()

//棧1資料彈出至棧2

while(s1.top > 0)

//棧2資料彈出

while(s2.top > 0)

//佇列操作

while(q.first

.tail)

cout<;

return 0

;}

用兩個棧模擬佇列

本文參考了嚴蔚敏的 資料結構 由於佇列先進先出,而棧後進先出,用兩個棧就可以模擬佇列 include using namespace std define null 0 define ok 1 define yes 1 define no 0 define error 0 define false ...

用兩個棧模擬佇列

問題 如何用兩個堆疊模擬實現乙個佇列?如果這兩個堆疊的容量分別是m和n m n 你的方法能保證的佇列容量是多少?如何模擬?首先棧是先進後出,佇列是先進先出,因此二者的差別主要在於進出的順序。假設有棧a n b m 當把n個資料全部放入棧a,此時a棧頂是n,棧底是1。再將a內的資料出棧存入棧b,此時棧...

用兩個棧模擬佇列

pragma once define ndebug include include includeusing namespace std include cmystack.h templateclass cqueue return stack2.top private stackstack1 sta...