题目
参考资料
思路要点
用两个栈
一个栈作为输入栈,一个作为输出栈
如果要删除队头元素的时候:如果输出栈为空,将输入栈元素压入输出栈中,然后弹出元素
输出栈不为空,直接弹出元素
在初始化这块一直很迷惑,然后看题解看到大家都是直接在类的内部定义,不用指针
代码
class CQueue {
public:
stack<int> ins;
stack<int> outs;
CQueue() {
}
void appendTail(int value) {
ins.push(value);
}
int deleteHead() {
int temp;
if(ins.empty()&&outs.empty()){
return -1;
}
else if(outs.empty()){
while(!ins.empty()){
outs.push(ins.top());
ins.pop();
}
temp=outs.top();
outs.pop();
return temp;
}
else {
temp=outs.top();
outs.pop();
return temp;
}
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/