232.用棧實現隊列
題目鏈接
解題思路:在pop的時候,操作就復雜一些,輸出棧如果為空,就把進棧數據全部導入進來;peek的時候可以用this指針。
代碼如下:
class MyQueue {
public:stack<int> stIn;stack<int> stOut;MyQueue() {}void push(int x) {stIn.push(x);}int pop() {if(stOut.empty()){while(!stIn.empty()){stOut.push(stIn.top());stIn.pop();}}int result = stOut.top();stOut.pop();return result;}int peek() {int res = this->pop();stOut.push(res);return res;}bool empty() {return stIn.empty() && stOut.empty();}
};
225. 用隊列實現棧
題目鏈接
解題思路: 可以直接用一個隊列模擬棧,將頭部元素直接添加到末尾。
代碼如下:
class MyStack {
public:
//用一個隊列試現棧queue<int> que;MyStack() {}void push(int x) {que.push(x);}int pop() {int size = que.size();size--;while(size--){que.push(que.front());//將隊列中頭元素添加到末尾que.pop();}int result = que.front();que.pop();return result;}int top() {return que.back();}bool empty() {return que.empty();}
};
que.front()
可以訪問隊列中的第一個元素,但是該元素仍然保留在隊列中,不會被刪除。
que.back()
用于獲取隊列中的最后一個元素,而不會將其從隊列中刪除。