用兩個棧實現佇列

2021-08-22 10:26:39 字數 1137 閱讀 9021

棧 是先進的後出來,佇列是先進的先出來。

入佇列:直接push進stack1

出佇列:如果兩個佇列都為空就直接返回。如果stack2為空,就將stack1中的元素push進stack2中,再對stack2進行pop,此時就相當於pop了佇列(入棧的乙個元素)。如果stack2不為空,就直接pop stack2中的元素。

ac**:

class solution

int pop()

int top;

if(stack2.empty())

}top = stack2.top();

stack2.pop();

return top;

}private:

stackstack1;

stackstack2;

};

入棧:如果queue2不為空,就push進stack2中,否則,stack1為空或不為空,都push進stack1中。

出棧:如果兩個佇列都為空,那麼直接返回,輸出「stack is empty」。當queue1不為空時,將queue1中的元素push進queue2中,最後queue1中剩下乙個元素,對這個元素進行pop。當queue2不為空時,將queue2中的元素push進queue1中,最後在queue2中剩下乙個元素,這個元素就是要pop的元素。

#include#includeusing namespace std;

class solution

int pop()

int front;

if(queue1.size() > 0)

//此時queue1中只有1個元素,進行出棧

front = queue1.front();

queue1.pop();

} else if(queue2.size() > 0)

//此時queue2中只有1個元素,進行出棧

front = queue2.front();

queue2.pop();

} return front;

}private:

queuequeue1;

queuequeue2;

};int main()

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

劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...

用兩個棧實現佇列與用兩個佇列實現棧

pragma once要在標頭檔案的最開始加入這條雜注,就能夠保證標頭檔案只被編譯一次 pragma once是編譯器相關的,就是說即使這個編譯系統上有效,但在其他編譯系統也不一定可以,不過現在基本上已經是每個編譯器都有這個雜注了。用兩個棧實現佇列 每個模板函式的實現都需要加template模板列表...

用兩個棧實現佇列 與 用兩個佇列實現棧

用兩個棧實現乙個佇列的功能?要求給出演算法和思路 分析 入隊 將元素進棧a 出隊 判斷棧b是否為空,如果為空,則將棧a中所有元素pop,並push進棧b,棧b出棧 如果不為空,棧b直接出棧。用兩個佇列實現乙個棧的功能?要求給出演算法和思路 分析 入棧 將元素進佇列a 出棧 判斷佇列a中元素的個數是否...