數據結構用兩個棧實現一個隊列的實例
棧是先進后出,隊列是先進先出
每次元素都push在st1中,pop的時候如果st2為空,將st1的棧頂元素放在st2的棧底,這樣st1的所有元素都放在st2中,st1的棧底就是st2的棧頂,pop st2的棧頂,這樣就滿足了隊列的先進先出。
#include <iostream>using namespace std;#include <stack>#include <stdlib.h>template <class T>class SQueue {public: void Push(const T& value); T Pop();private: stack<T> st1; stack<T> st2;};template <class T>T SQueue<T>::Pop(){ if (st2.size() <= 0) { if (st1.size() == 0) { exit(1); } while ((st1.size() > 0)) { T& top = st1.top(); st2.push(top); st1.pop(); } } T head = st2.top(); st2.pop(); return head;}template <class T>void SQueue<T>::Push(const T& value){ st1.push(value);}int main(){ SQueue<int> sq; for (int i = 0; i < 10; ++i) { sq.Push(i); } for (int i = 0; i < 5; ++i) { cout << sq.Pop() << " "; } for (int i = 0; i < 5; ++i) //分兩次驗證 { cout << sq.Pop() << " "; } cout << endl; system("pause"); return 0;}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選