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; }