兩個棧實現佇列,兩個佇列實現棧

2021-08-07 14:08:16 字數 952 閱讀 5945

#include #include #include using namespace std;

//使用兩個棧實現佇列,實現了push,pop,front操作

//其中棧s2是輔助棧,push直接在s1中插入

//pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。

//front就是s2的top,跟pop類似。

templateclass my_queue

void pop()

} s2.pop();

} t front()

} return s2.top();

}private:

stacks1;

stacks2;

};//兩個佇列實現的棧,實現了push,pop,top

//push 進乙個非空的棧,若全空進入q1.

//pop 將前size-1個元素移動到第二個佇列,然後最後乙個刪除

//top 直接是佇列的back就可以

templateclass my_stack

void pop()

q1.pop();

} else

q2.pop();

} }t top()

private:

queueq1;

queueq2;

};int main()

; for (int i = 0; i < 9; i++)

cout << "my_queue: ";

for (int i = 0; i < 9; i++)

cout << endl;

cout << "my_stack: ";

for (int i = 0; i < 9; i++)

cout << endl;

return 0;

}

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...

兩個棧實現佇列 兩個佇列實現棧

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...

兩個佇列實現棧和兩個棧實現佇列

棧 先進後出 佇列 先進先出 1 兩個佇列實現棧 佇列a 佇列b 入棧 入佇列a,1,2,3,4 入棧,在佇列a裡為 a 1,2,3,4 出棧,將佇列a中的元素入佇列b直到佇列a裡的元素只剩下乙個,則隊a為4,隊b為1,2,3,a 4,b 1,2,3,輸出a隊頭4 include include u...