這個思路實在太難想了。。。。
/* *str為PUSH,通過s1.push()使元素入棧; *str為POP時,s2非空,輸出棧頂元素,s2.pop()彈出棧頂元素;若s2彈出元素後為空且s1不空,將s1中所有元素push進s2; *str為POP時,s2為空,若s1不空,將s1中所有元素push進s2,最後輸出棧頂元素並通過s2.pop()彈出棧頂元素; */題目描述:用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。
#include#include #include using namespace std; /* *str為PUSH,s1.push(); *str為POP時,s2非空,輸出棧頂元素s2.pop();若s2彈出元素後為空,若s1不空,將s1中所有元素push進s2; *str為POP時,s2為空,若s1不空,將s1中所有元素push進s2,最後輸出棧頂元素; */ int main() { int n; while(cin>>n) { stack s1,s2; int num; string str; for(int i=0;i >str; if(str=="PUSH") { cin>>num; s1.push(num); }else if(str=="POP") { if(!s2.empty()) { cout<