#include <iostream>
#include <stack>
using namespace std;
template<typename T>
class Queue{
public:
Queue();
~Queue();
void InQueue(const T& elem);
T OutQueue();
bool isEmpty();
private:
stack<T> s1, s2;
};
template<typename T>
bool Queue<T>::isEmpty()
{
if (s2.empty() && s1.empty())
return true;
else
return false;
}
template<typename T>
Queue<T>::Queue()
{
cout << "construct Queue" << endl;
}
template<typename T>
Queue<T>::~Queue(){
cout << "deconstructor" << endl;
}
template<typename T>
void Queue<T>::InQueue(const T& elem)
{
s1.push(elem);
}
template<typename T>
T Queue<T>::OutQueue()
{
if (s2.size() <= 0)
{
while (s1.size() > 0)
{
T tmp = s1.top();
s2.push(tmp);
s1.pop();
}
}
if (s2.size() == 0)
{
throw exception("error");
}
T head = s2.top();
s2.pop();
return head;
}
int main()
{
Queue<int>q;
while (1)
{
int tmp;
cin >> tmp;
if (tmp == -1)
break;
q.InQueue(tmp);
}
while (!q.isEmpty())
{
int s = q.OutQueue();
cout << s << " ";
}
cout << endl;
return 0;
}
两个栈模拟一个队列
最新推荐文章于 2022-09-25 13:49:09 发布
本文介绍了一种利用两个栈来实现队列数据结构的方法,并提供了一个C++模板类的具体实现。该实现支持基本的队列操作,如入队、出队和判断队列是否为空。通过这种方式,可以有效地在不支持队列的环境中模拟队列的行为。
1624

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



