设置两个栈实现队列的先进先出的功能。
两个栈设置为stack1,stack2。stack1是用于插入数据,stack2是用于删除数据。插入数据直接插入到stack1中即可,对于删除数据,那么是当stack1不为空时将stack1中的数据移动到stack2中,那么弹出栈顶元素即可。
代码如下:
void CQueue::AppendTail(int data)//入队列
{
stack1.Push(data);
}
int CQueue::DeleteHead()//出队列
{
if (stack2.empty() == 1)//第二个栈为空,那么将数据从栈1中,移动到栈2中
{
while (stack1.empty() != 1)//只要不为空,那么就移动
{
stack2.Push(stack1.Pop());
}
}
if (stack2.empty() == 1)
{
cout<<"队列为空"<<endl;
exit(0);
}
int data = stack2.Pop();
return data;
}