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

2021-06-25 12:44:45 字數 1124 閱讀 7243

1. 兩個棧實現佇列

大致思路:入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中【s1.size()-1】個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作

#include using namespace std;

#include #include #include #include /* two queue construct a stack */

class queue

void add(int x)

int remove()elseelse

x = s1.top();

s1.pop();}}

return x;

}};int main()else if(!strcmp(str,"pop"))}}

system("pause");

}

2.兩個佇列實現棧

大致思路:其中乙個佇列作為緩衝區,如進棧時,將元素進入s1和s2中其中有元素的那個佇列(另乙個緩衝區是一定是空的),如果兩個都是空的,選s1或者s2都ok,出棧時,加入s1中有元素,s2為空,那麼將s1中前(s1.size()-1)個元素出佇列s1,然後加入到s2中,將s1中的隊尾的元素出佇列,完成了出棧

#include using namespace std;

#include #include #include #include /* two queue construct a stack */

class stack

while(!s2.empty())

}~stack(){}

void push(int x)

}int pop()

x = s1.front();

s1.pop();

}else if(!s2.empty())

x = s2.front();

s2.pop();

}else

return x;

}};int main()else if(strcmp(t,"pop") == 0)

}system("pause");

}

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

include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...

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

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的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...