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
- C++模板实现的单向队列
- C++模板实现的单向链表
- C++,数据结构,单向链表的实现及简单运用,运用模板
- c++模板实现的队列
- 队列的C++模板实现
- 队列类的模板实现
- 【C++】模板实现双链表和队列
- 利用数组实现单向队列
- C语言单向链表的实现
- C语言实现的单向链表
- 单向链表的C语言实现
- C++:操作单向链表的实现
- C语言单向链表的实现
- c语言单向链表的实现
- C语言单向链表的实现
- C语言单向链表的实现
- C语言单向链表的实现
- C语言单向链表的实现
- windows开发命令大全
- 快结束了
- TCP/IP 分段与重组
- 服务器证书安装配置指南(Nginx)
- mahout相似度算法(一)
- C++模板实现的单向队列
- 服务器证书安装配置指南(Resin)
- 一个用C++写的可以继承的单例类
- 服务器证书安装指南(Domino)
- 心中有佛,看人如佛;心中有魔,看人如魔。
- BeginInvoke 方法真的是新开一个线程进行异步调用吗?
- U盘装系统
- 服务器证书安装指南(Lighttpd)
- 最短路径搜索算法中Dijkstra的原理