題目:
思路:
大部分的操作都不難:
難點(diǎn)主要在于隊(duì)列實(shí)現(xiàn)棧的push操作,因?yàn)殛?duì)列的push是放到表尾,而棧的push是放到了表頭
這里可以想到用一個(gè)臨時(shí)隊(duì)列:
上代碼:
class MyStack {
public:
/** Initialize your data structure here. */
MyStack() {
}
/** Push element x onto stack. */
void push(int x) {
//創(chuàng)建一個(gè)臨時(shí)的隊(duì)列
std::queue<int> tem_data;
tem_data.push(x);
//將_data中的元素放到tem_data中
while(!_data.empty()){
tem_data.push(_data.front());
_data.pop();
}
//再將tem_data中的放到_data中,完成倒置
while(!tem_data.empty()){
_data.push(tem_data.front());
tem_data.pop();
}
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
int x = _data.front();
_data.pop();
return x;
}
/** Get the top element. */
int top() {
return _data.front();
}
/** Returns whether the stack is empty. */
bool empty() {
return _data.empty();
}
//私有成員
private:
std::queue<int> _data;
};
/**
* 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();
*/
總結(jié):
今下午有些心不在焉,精神恍惚.
但是要記住,堅(jiān)持一件事情首先就不能著急,要一步一步來,門檻高的東西都不是一天兩天可以看到效果的,要想真正學(xué)到東西,持之以恒,水滴石穿,鐵柱成針!
繼續(xù)加油!