标签:
<span style="font-family:SimSun;font-size:18px;">#include<iostream> #include<stack> using namespace std; template <class T> class queue { public: queue(); T Top(); bool Empty(); ~queue(); void appendTail(const T& _data); void deleteHead(); void Print(); private: stack<T> s1;//插入结点的桟 stack<T> s2;//删除结点的桟/取栈顶元素的桟/打印队列元素的桟 }; template <class T> queue<T>::queue() {} template <class T> queue<T>::~queue() { while (!Empty()) { deleteHead(); } } template <class T> T queue<T>::Top() { if (Empty()) { cout << "Top:queue is NULL!" << endl; return (T)-1; } if (s2.empty()) { while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } } return s2.top(); } template <class T> bool queue<T>::Empty() { return (s1.empty() && s2.empty()); } template <class T> void queue<T>::appendTail(const T& _data) { s1.push(_data); } template <class T> void queue<T>::deleteHead() { if (Empty()) { cout << "deleteHead:queue is NULL!" << endl; return; } if(!s2.empty()) { s2.pop(); } else { while (!s1.empty()) { T tmp = s1.top(); s1.pop(); if (!s1.empty()) { s2.push(tmp); } } } } template <class T> void queue<T>::Print() { if (Empty()) { cout << "Print:queue is NULL!" << endl; return; } while (!Empty()) { while (!s2.empty()) { cout << s2.top() << "->"; s2.pop(); } while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } } cout << endl; } void Test() { queue<int> q1; q1.appendTail(1); q1.appendTail(2); q1.appendTail(3); q1.appendTail(4); q1.deleteHead(); q1.appendTail(10); q1.appendTail(99); q1.appendTail(65); q1.deleteHead(); q1.Print(); } void Test1() { queue<int> q1; q1.appendTail(1); q1.appendTail(2); q1.appendTail(3); q1.appendTail(4); q1.deleteHead(); q1.appendTail(10); q1.appendTail(99); q1.appendTail(65); q1.deleteHead(); q1.deleteHead(); q1.deleteHead(); q1.deleteHead(); q1.deleteHead(); q1.Print(); q1.deleteHead(); q1.Print(); q1.deleteHead(); q1.Top(); } int main() { cout << "Test:" << endl; Test(); cout << "Test1:" << endl; Test1(); return 0; }</span>
标签:
原文地址:http://blog.csdn.net/kkmdmcgxi/article/details/51333960