//A栈用来添加新的元素 B栈用来出队
//因为队列FIFO 栈FILO 因此将A中的翻转后存放到B中
//B栈(反转后出栈和出队要求相同)用来模拟出队
Stack<int>A,B;
void appendTail(int value) //入队
{
A.push(value); //入队在A栈中实现
}
int deleteHead() { //出队,返回队首元素
//1:如果B栈是不为空的,那么栈顶元素就相当于队首
if(!B.empty())
{
int val=B.top(); //先用val存放 因为在return前需要实现pop
B.pop();
return val;
}
//2:B空 A空 那么队列也是空的 无法删除
if(A.empty())
{
return -1;
}
//3:B空 A不空 将A栈所有元素反转后放到B栈中
while(!A.empty())
{
int val=A.top();
A.pop();
B.push(val);
}
int val=B.top(); //删除B栈栈顶元素 出队
B.pop();
return val;
}
C++双栈实现队列
最新推荐文章于 2024-04-24 06:00:00 发布