兩個棧實現佇列
兩個棧嚴格區分開來使用,乙個專門用來做插入(插入棧),乙個專門用來做彈出(彈出棧)。這樣在做插入的時候什麼都不需要做,直接呼叫插入棧的push方法就可以了。但是在彈出的時候就要麻煩一點,先判斷在彈出棧中是否包含資料,如果包含,直接從頂部彈出,如果不包含,把插入棧中的元素挨個匯入到彈出棧中。然後再從棧頂將第乙個元素彈出。
class solution
public:
void push(int node) {
stack1.push(node);
int pop() {
if(!stack2.empty())
int ret=stack2.top();
stack2.pop();
return ret;
else
if(stack1.empty())
return -1;
while(!stack1.empty())
stack2.push(stack1.top());
stack1.pop();
int ret=stack2.top();
stack2.pop();
return ret;
private:
stackstack1;
stackstack2;
資料結構中用兩個佇列實現棧
棧 後進先出 lifo last in first out 最後插入的元素最先出來。佇列 先進先出 fifo first in first out 最先插入的元素最先出來。圖 1 當棧裡面插入元素 abcd 的時候,元素a在棧底 最後出去 d在棧頂 最先出去 圖 2 將元素 abc 從q1中頭刪,然...
兩個棧實現佇列 兩個佇列實現棧
1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...
兩個棧實現佇列,兩個佇列實現棧
include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...