C++模板实现的单向队列

来源:互联网 发布:烟台玉兔网络 编辑:程序博客网 时间:2024/05/29 09:17

C++模板实现的单向队列的元素添加,元素删除,元素清除功能

//Queues.h

#ifndef DDXX_QUEUES_H#define DDXX_QUEUES_H#include <iostream>using namespace std;template<typename Type>class Queues{public:Queues();~Queues();public:struct Node{Typee;Node*next;Node(){}Node(Type _e){e= _e;next= NULL;}};public:bool add(Type e);bool erase();bool isEmpty();int  getLength();void print();void clear();private:intm_Length;Node*m_head;Node*m_end;};template<typename Type> Queues<Type>::Queues(){m_head = new Node;m_end = m_head;m_head->next = NULL;m_Length = 0;}// here change Type to Types has no influence to "add" functiontemplate<typename Types> bool Queues<Types>::add(Types e){Node* ptr = new Node(e);if( ptr == NULL ){cout<<"Allocate memory for new element failed"<<endl;return false;}m_end->next = ptr;m_end = ptr;m_Length++;return true;}template<typename Type> bool Queues<Type>::erase(){if ( m_head->next == NULL ){cout<<"The queue is empty"<<endl;return false;}Node* ptr = m_head->next;m_head->next = ptr->next;delete ptr;ptr = NULL;m_Length--;return true;}template<typename Types> bool Queues<Types>::isEmpty(){return m_head == m_end;}template<typename Type> int Queues<Type>::getLength(){return m_Length;}template<typename Type> void Queues<Type>::print(){Node* ptr = m_head;while(ptr->next != NULL){ptr = ptr->next;cout<<"element value:"<<ptr->e<<endl;}}template<typename Type> void Queues<Type>::clear(){Node* ptr = m_head->next;while(ptr != NULL){ptr = ptr->next;delete m_head->next;m_head->next = ptr;m_Length--;}m_end = m_head;}template<typename Type> Queues<Type>::~Queues(){Node* ptr = m_head->next;while(ptr != NULL){ptr = ptr->next;delete m_head->next;m_head->next = ptr;m_Length--;}m_end = m_head;delete m_head;m_head = NULL;m_end = NULL;}#endif

// main.cpp

#include <iostream>#include "Queues.h"using namespace std;void main(){cout<<"*****************************test queue init***************************"<<endl;Queues<int> Que;cout<<"Queues is empty? :"<<Que.isEmpty()<<endl;cout<<"Que's length is:"<<Que.getLength()<<endl;cout<<"*****************************test queue add****************************"<<endl;Que.add(1);Que.add(2);Que.add(3);Que.add(4);Que.print();cout<<"Queues is empty? :"<<Que.isEmpty()<<endl;cout<<"Que's length is:"<<Que.getLength()<<endl;cout<<"*****************************test queue erase**************************"<<endl;Que.erase();Que.erase();Que.print();cout<<"Queues is empty? :"<<Que.isEmpty()<<endl;cout<<"Que's length is:"<<Que.getLength()<<endl;cout<<"*****************************test queue clear**************************"<<endl;Que.clear();Que.print();cout<<"Queues is empty? :"<<Que.isEmpty()<<endl;cout<<"Que's length is:"<<Que.getLength()<<endl;}
程序的运行结果:





1 0
原创粉丝点击