演算法學習記錄五(C++)--->兩個棧實現佇列
描述
*用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
*棧是先進後出,FILO
*佇列是先進先出,FIFO
思路
入隊:將元素進棧A
出隊:判斷棧B是否為空,如果為空,則將棧A中所有元素pop,並push進棧B,棧B出棧;
如果不為空,棧B直接出棧。
class Solution
{
public:
// 棧1負責入棧
void push(int node) {
stack1.push(node);
}
// 出棧
int pop() {
int a;
// 當棧2為空的時候
if(stack2.empty()){
// 把棧1上的所有資料從棧頂拿出來依次push到棧2
while(!stack1.empty()){
a = stack1.top();
stack2.push(a);
stack1.pop();
}
}
// 棧2不為空 或者 直接出棧
a=stack2.top();
stack2.pop();
return a;
}
/*
<分析>:
入隊:將元素進棧A
出隊:判斷棧B是否為空,如果為空,則將棧A中所有元素pop,並push進棧B,棧B出棧;
如果不為空,棧B直接出棧。
*/
private:
stack<int> stack1;
stack<int> stack2;
};
擴充套件->兩個佇列實現棧
入棧:將元素進佇列A
出棧:判斷佇列A中元素的個數是否為1,如果等於1,則出佇列,否則將佇列A中的元素 以此出佇列並放入佇列B,直到佇列A中的元素留下一個,然後佇列A出佇列,再把 佇列B中的元素出佇列以此放入佇列A中。
相關文章
- 兩個棧實現佇列佇列
- 兩個棧實現佇列操作佇列
- 用兩個棧實現佇列佇列
- 【劍指offer】兩個棧實現一個佇列佇列
- 【劍指offer】兩個佇列實現一個棧佇列
- 面試題之【用兩個棧實現佇列】面試題佇列
- 題目9:用兩個棧實現佇列佇列
- offer通過--7兩個棧實現佇列-2佇列
- offer通過--8兩個棧實現佇列-2佇列
- 劍指offer | 09. 用兩個棧實現佇列佇列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- Redis 佇列學習記錄Redis佇列
- 用2個棧實現佇列佇列
- 通過佇列實現棧OR通過棧實現佇列佇列
- [每日一題] 第七題:用兩個棧實現佇列每日一題佇列
- 資料結構學習(C++)——棧和佇列(定義和實現) (轉)資料結構C++佇列
- 10天【程式碼隨想錄演算法訓練營34期】 第五章 棧與佇列part01(● 232.用棧實現佇列 ● 225. 用佇列實現棧)演算法佇列
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 用佇列實現棧佇列
- 用棧實現佇列佇列
- C++ 學習筆記之 STL 佇列C++筆記佇列
- 【ZJOF】用來個棧來實現一個佇列佇列
- php使用佇列 SplQueue類學習記錄PHP佇列
- 劍指offer(java實現)第5題“用兩個棧實現佇列”-牛客網Java佇列
- [CareerCup] 3.5 Implement Queue using Two Stacks 使用兩個棧來實現佇列佇列
- Day 10| 232.用棧實現佇列 、 225. 用佇列實現棧佇列
- 《劍指 Offer》棧實現佇列佇列
- 用JavaScript實現棧與佇列JavaScript佇列
- C#實現棧和佇列C#佇列
- Laravel 佇列 --- database 驅動(今天剛學習了佇列,記錄下筆記)Laravel佇列Database筆記
- RabbitMQ 學習筆記 -- 12 死信佇列 DLX + TTL 方式實現延遲佇列MQ筆記佇列
- 程式碼隨想錄演算法訓練營第第十天 | 232.用棧實現佇列 、225. 用佇列實現棧演算法佇列
- 利用棧實現佇列(C語言實現)佇列C語言
- 《演算法》- 佇列和棧演算法佇列
- 演算法-棧佇列堆演算法佇列
- 資料結構 使用2個棧實現一個佇列資料結構佇列
- leedcode-用佇列實現棧佇列
- leedcode-用棧實現佇列佇列