#include<iostream>
#include<stack>
using namespace std;
//定义模板类,参数T可以是任意的类型,后面实例化的时候指出即可
template <typename T> class Queue
{
public:
Queue(void) {};
~Queue(void) {};
void appendTail(const T& node);
T deleteHead();
private:
stack<T> stack1;
stack<T> stack2;
};
//模板类里得函数的定义
template <typename T> void Queue<T>::appendTail(const T& element)
{
stack1.push(element);
}
template<typename T> T Queue<T>::deleteHead()
{
if (stack2.size() == 0)//stack.size()求的是栈里的元素个数
{
while (stack1.size() > 0)
{
T& data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
T head = stack2.top();
stack2.pop();
return head;
}
int main()
{
Queue<char> queue1;//模板类的实例化对象
char *s = "abc";
queue1.appendTail(s[0]);
queue1.appendTail(s[1]);
queue1.appendTail(s[2]);
char result = queue1.deleteHead();
cout << result << endl;
}
相关题目:用两个队列实现栈
#include<iostream>
#include<queue>
using namespace std;
template<typename T> class Stack
{
public:
Stack() {};
~Stack(){};
void appendHead(const T& data);
T deleteHead();
private:
queue<T>queue1;
queue<T>queue2;
queue<T>temp;
};
template<typename T> void Stack<T>::appendHead(const T& data)
{
queue1.push(data);
}
template<typename T> T Stack<T>::deleteHead()
{
while (queue1.size() > 1)
{
T& data = queue1.front();
queue1.pop();
queue2.push(data);
}
T head = queue1.front();
queue1.pop();
temp = queue1;
queue1 = queue2;
queue2 = temp;
return head;
}
int main()
{
Stack<char> stack1;
char* s = "abcde";
char result;
stack1.appendHead(s[0]);
stack1.appendHead(s[1]);
stack1.appendHead(s[2]);
stack1.appendHead(s[3]);
result = stack1.deleteHead();
cout << result << endl;
result = stack1.deleteHead();
cout << result << endl;
}