算法思想:栈是先进后出,队列是先进先出。
1、进队时,一直往stack1中push
2、出队时,将stack1的数据依次push到stack2中,stack2的栈顶元素出栈;当stack2栈不为空时,直接栈顶元素出栈。
算法如下:
#include <stack>
#include <iostream>
using namespace std;
class NewQueue
{
public :
NewQueue(){}
~NewQueue(){}
//入队
void EnQueue(int data)
{
s1.push(data);
}
//出队
int DeQueue()
{
if (s1.empty() && s2.empty())
{
cout << "queue is empty" << endl;
return -1;
}
if (!s2.empty())
{
int result = s2.top();
s2.pop();
return result;
}
while (!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
int result = s2.top();
s2.pop();
return result;
}
//队列长度
int Count()
{
return s1.size() + s2.size();
}
private:
stack<int> s1;
stack<int> s2;
};

本文介绍了一种使用两个栈来模拟队列操作的方法。通过不断压入数据到第一个栈并在需要时转移至第二个栈来实现队列的先进先出特性。文章提供了完整的C++实现代码,包括入队、出队及获取队列长度等功能。
383

被折叠的 条评论
为什么被折叠?



