带复制构造函数、赋值运算符的模板队列
来源:互联网 发布:阿里云网址是多少 编辑:程序博客网 时间:2024/06/08 01:09
#ifndef QUEUE_HPP#define QUEUE_HPP #include <assert.h>#include <stddef.h>template <typename T> class Queue;template <typename T>class Node{ friend class Queue<T>; public: Node(T data = 0, Node *next = NULL) :data_(data), next_(next){} private: T data_; Node *next_;};template <typename T>class Queue{ public: typedef Node<T> *p_node; Queue(); Queue(const Queue &other); Queue &operator = (const Queue &other); ~Queue(); void clear(); void enqueue(const T &data); void dequeue(T &data); bool isEmpty(); size_t size(); private: p_node front_; p_node rear_; size_t size_;};template <typename T>inline Queue<T>::Queue() :front_(NULL), rear_(NULL), size_(0){}template <typename T>inline Queue<T>::Queue(const Queue &other) :front_(NULL), rear_(NULL), size_(0){ p_node p = other.front_; while(p != NULL){ enqueue(p->data_); p = p->next_; }}template <typename T>inline Queue<T> &Queue<T>::operator = (const Queue &other){ if(this != &other){ clear(); p_node p = other.front_; while(p != NULL){ enqueue(p->data_); p = p->next_; } } return *this;}template <typename T>inline Queue<T>::~Queue(){ clear();}template <typename T>inline void Queue<T>::clear(){ p_node p = front_, q = NULL; while(p != NULL){ q = p; delete p; p = q->next_; } size_= 0;}template <typename T>inline void Queue<T>::enqueue(const T &data){ p_node newNode = new Node<T>(data, NULL); if(isEmpty()){ front_ = rear_ = newNode; } else{ rear_->next_ = newNode; rear_ = rear_->next_; } size_++;}template <typename T>inline void Queue<T>::dequeue(T &data){ assert(!isEmpty()); p_node p = front_; front_ = front_->next_; data = p->data_; delete p; size_--;}template <typename T>inline bool Queue<T>::isEmpty(){ return front_ == NULL;}template <typename T>inline size_t Queue<T>::size(){ return size_;}#endif /*QUEUE_HPP*/
0 0
- 带复制构造函数、赋值运算符的模板队列
- 复制构造函数与赋值运算符
- 复制构造函数和赋值运算符
- C++:类的复制构造函数、赋值运算符
- 赋值运算符和复制构造函数的区别
- 派生类的复制构造函数与赋值运算符
- 复制构造函数和赋值运算符根本的不同
- String的构造函数,析构函数,复制构造函数,赋值运算符
- C++ 复制构造函数和赋值运算符重载函数
- 复制构造函数和重载赋值运算符
- string赋值运算符、复制构造函数等实现
- C++ 中的赋值运算符重载和复制构造函数
- 第十二章:默认复制构造函数和赋值运算符
- 复制构造函数、重载赋值运算符、类型转换小结
- 复制构造函数,赋值运算符重载,列表初始化
- 类X的复制构造函数,析构函数,赋值运算符声明
- 异常安全的复制构造函数和拷贝赋值运算符函数
- 类模板以及赋值运算符重载、拷贝构造函数
- poj2965(dfs暴力枚举)
- 求助关于ltrace 静态编译的
- MFC孙鑫第十四讲UDP
- 提高程序员项目设计水平的11条建议
- 用EA生成实体层代码
- 带复制构造函数、赋值运算符的模板队列
- 全排列算法:不含重复元素,包含重复元素,字母序排列
- 新生排位赛第四场 dp
- xml(3)--dom4j实现crud操作
- HDU1325并查集判断是否为一棵树
- Socket:读写处理及连接断开的检测 http://hongdow.com/page/2
- 身份证号的检测
- C链表之创建简单静态链表
- Http协议参数传递中编码问题(Get/Post 方式)