目标:用两个栈实现一个队列数据结构
方法:栈是先入后出,队列是先入先出。那么对于入队列就是,普通的压栈操作。对于返回队列首元素呢,则是将栈B的元素全部顺序出栈,压入栈A,然后再将栈A的栈顶元素出栈。对于弹出队首元素呢,则是与返回队列首元素的操作相同。
代码:
class Solution{
public:
void push(int num){
strDataTwo.push(num);
}
int front(){
int tmp;
if(strDataOne.empty() && strDataTwo.empty()){
cout<<"your queue is empty !!"<<endl;
return -1;
}
if(strDataOne.empty()){
while(!strDataTwo.empty()){
tmp = strDataTwo.top();
strDataTwo.pop();
strDataOne.push(tmp);
}
}
return strDataOne.top();
}
void pop(){
int tmp;
if(strDataOne.empty() && strDataTwo.empty()){
cout<<"your queue is empty !!"<<endl;
return;
}
if(strDataOne.empty()){
while(!strDataTwo.empty()){
tmp = strDataTwo.top();
strDataTwo.pop();
strDataOne.push(tmp);
}
}
strDataOne.pop();
}
private:
stack<int> strDataOne;
stack<int> strDataTwo;
};