LeetCode(225)用佇列實現棧
阿新 • • 發佈:2022-05-20
令佇列一為主佇列,佇列二為輔助佇列
當佇列一空的時候,輸入的元素直接放進來,即隊頭和隊尾都是這個元素
當佇列非空的時候,輸入一個元素:
先把佇列一的元素都放入佇列二,輸入此元素,再把佇列二倒入佇列一,這樣就實現了新入隊的元素在佇列一的頭,即後進先出
另外,queue<int>q的基本操作是:
q.front();//返回隊頭元素 q.push(3);//插入3至隊尾 q.pop();//刪除隊頭元素 q.size();
附上程式碼:
class MyStack { public: queue<int>q1,q2; MyStack() { }void push(int x) { int t; if(q1.size()>0){ while(!q1.empty()){ q2.push(q1.front()); q1.pop(); } q1.push(x); while(!q2.empty()){ q1.push(q2.front()); q2.pop(); } }else{ q1.push(x); } } int pop() { int t = q1.front(); q1.pop(); return t; } int top() { return q1.front(); } bool empty() { if(q1.size()==0)return true; return false; } }; /** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty();*/