用倆個棧實現佇列

2021-08-18 10:50:01 字數 642 閱讀 6999

思路:棧是先進後出的,佇列是先進先出的,所以要想讓先壓進棧的元素先出來,只通過乙個棧是實現不了的,但我們可以通過將棧1的資料取出再壓入棧2中,這樣在棧1底部的(也就是先壓棧的)資料就會到棧2的頂部,再將其取出,就可以實現佇列先進先出了。

#include #include #include using namespace std;

class cqueue

char deletehead() //隊首刪除

}if (stack2.size() == 0)

throw std::exception("queue is empty");

char head = stack2.top();

stack2.pop();

return head;

} int getstacksize()

private:

stackstack1;

stackstack2;

};int main(int argc,char *argv)

do //只有執行一次deletehead時資料才會從stack1轉入stack2

while (q1.getstacksize());

return 0;

}

用倆個棧實現佇列

棧 佇列 一 題目 感謝 提供的題目 用倆個棧實現佇列。某佇列的宣告如下 templateclass cqueue cqueue void deletehead remove a element from head private stackm stack in stackm stack out 分...

57 用倆個棧實現佇列

57.用倆個棧實現佇列。題目 某佇列的宣告如下 83templateclass cqueue cqueue void deletehead remove a element from head private stackm stack1 stackm stack2 分析 從上面的類的宣告中,我們發現...

C 倆棧實現佇列

自畫草圖 1 2 3 4向s1壓棧 s1彈棧,元素為4 3 2 1 4 3 2 1壓向s2 s2彈棧為1 2 3 4 即符合隊的特徵先進先出 設計思路 1.s1棧往裡壓資料 2.s2棧只負責彈資料 3.s2彈棧前,先判斷s2是否為空棧,如果是空棧,判斷s1是否是空棧,都為空棧則隊空 4.s1不為空棧...