c++ 类模板 用栈实现队列

时间:2022-06-27 17:40:54

c++语言可以利用STL库中定义的栈类实现队列的操作。

包括入队列、出队列操作。

下面就是用两个栈实现队列的上述操作。其中涉及到类模板的知识,不清楚的可以去其它地方进行查询。

#include <iostream>
#include <stack>
using namespace std;

template<typename T> class CQueue
{
public:
//CQueue(void);
//~CQueue(void);
void appendTail(const T& node);
T deleteHead();
private:
stack<T> stack1;
stack<T> stack2;
};

template<typename T> void CQueue<T>::appendTail(const T& element)
{
stack1.push(element);
}
template<typename T> T CQueue<T>::deleteHead()
{
if(stack2.size()<=0)
{
while(stack1.size()>0)
{
stack2.push(stack1.top());
stack1.pop();
}
}
if(stack2.size()==0)
{
cout << "Queue is empty" << endl;
}
T head=stack2.top();
stack2.pop();
return head;
}

void Test(char actual, char expected)
{
if(actual==expected)
{
cout << "Test Passed" << endl;
}
else
{
cout << "Test Failed" << endl;
}
}

int main()
{
CQueue<char> My_queue;
My_queue.appendTail('a');
My_queue.appendTail('b');
My_queue.appendTail('c');

char head = My_queue.deleteHead();
Test(head,'a');

head = My_queue.deleteHead();
Test(head,'b');

My_queue.appendTail('d');
head = My_queue.deleteHead();
Test(head,'c');

My_queue.appendTail('e');
head = My_queue.deleteHead();
Test(head,'d');

head = My_queue.deleteHead();
Test(head,'e');

return 0;
}