算法思想:栈是先进后出,队列是先进先出。
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;
};