用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型
思路: ①將一行數1,2,3,4,5 入s1棧,然后再將棧s1中的數據入s2棧,得到順序。 ②但如果取棧中某一個元素,然后繼續壓棧.如:壓入1,2,3。然后1出棧,再壓入4,5, 然后2出棧。情況如下圖。
③本題還有一個坑就是要進行異常處理,當兩個棧都沒有元素,此時如果執行出棧操作,將會拋出異常。
代碼如下所示:
class Solution{public: void push(int node) { stack1.push(node); } int pop() { int num = 0; while (!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } if (stack2.empty()) { throw; } else { num = stack2.top(); stack2.pop(); } while (!stack2.empty()) { stack1.push(stack2.top()); stack2.pop(); } return num; }PRivate: stack<int> stack1; stack<int> stack2;};新聞熱點
疑難解答