题目:
关键点:
1.维持两个栈,一个作为输入栈,一个作为输出栈
2.只有当输出栈为空的时候,才将输入栈中的元素导入输出栈,因为要满足队列的性质要求
C++代码(附带测试):
#include<iostream>
#include<stack>
using namespace std;
//一个栈作为输入栈,一个栈作为输出栈
//只有当输出栈为空时,才导入输入栈的值,因为要满足队列的特殊要求
class CQueue {
public:
CQueue() {
}
void appendTail(int value) {
input.push(value);
}
int deleteHead() {
if(output.empty()){
if(input.empty()){
return -1;
}
while(!input.empty()){
output.push(input.top());
input.pop();
}
int num = output.top();
output.pop();
return num;
}
else{
int num = output.top();
output.pop();
return num;
}
}
private:
stack<int> output;
stack<int> input;
};
int main(){
CQueue *ptr = new CQueue;
cout<<ptr->deleteHead()<<endl;
ptr->appendTail(5);
ptr->appendTail(2);
cout<<ptr->deleteHead()<<endl;
cout<<ptr->deleteHead()<<endl;
}