链表类模板
来源:互联网 发布:淘宝宝贝描述评分4.7 编辑:程序博客网 时间:2024/06/06 01:40
#include <iostream>using namespace std;class CNode //定义一个节点类{public:CNode *m_pNext; //定义一个节点指针,指向下一个节点int m_Data; //定义节点的数据CNode() //定义节点类的构造函数{m_pNext = NULL;//将m_pNext设置为空}};template <class Type> //定义类模板class CList // 定义CList类{private:Type *m_pHeader; //定义头节点int m_NodeSum; //节点数量public:CList() //定义构造函数{m_pHeader = NULL; // 将m_pHeafer设置为空m_NodeSum = 0; // 将m_NodeSum设置为0}Type* MoveTrail() //获取尾节点{Type *pTmp = m_pHeader; //定义一个临时节点,将其指向头节点for (int i = 1; i < m_NodeSum; i++) //遍历链表{pTmp = pTmp->m_pNext; //将下一个节点指向当前节点}return pTmp; //返回尾节点}void AddNode(Type *pNode) //添加节点{if (m_NodeSum == 0) //判断链表是否为空{m_pHeader = pNode; //在头节点处添加节点}else//链表不为空{Type* pTrail = MoveTrail(); //获取尾节点pTrail->m_pNext = pNode; //在尾节点处添加节点}m_NodeSum++;//使节点数量加1}void PassList()//遍历链表{if (m_NodeSum > 0)//判断链表是否为空{Type* pTmp = m_pHeader; //定义一个临时节点,将其指向头节点printf("%4d", pTmp->m_Data); //输出头节点数据 printf("%4d",pTmp->m_Data); 表示m_Data 占四位for (int i = 1; i < m_NodeSum; i++) {pTmp = pTmp->m_pNext; //获取下一个节点printf("%4d",pTmp->m_Data); //输出节点数据}}}~CList() //定义析构函数 {if (m_NodeSum > 0) //判断链表是否为空{Type *pDelete = m_pHeader; //定义一个临时节点,将其指向头节点Type *pTmp = NULL;//定义一个临时节点for (int i = 0; i < m_NodeSum; i++) //利用循环遍历所有节点{pTmp = pDelete->m_pNext;//将下一个节点指向当前节点delete pDelete;//释放当前节点pDelete = pTmp;//将当前节点指向下一个节点}m_NodeSum = 0;//设置节点数量为0pDelete = NULL; //将pDelete值为空pTmp = NULL; //将pTmp值为空}m_pHeader = NULL; //将m_pHeader值为空}};class CNet//定义一个节点类 {public:CNet *m_pNext;//定义一个节点类指针char m_Data;//定义节点类的数据成员CNet()//定义构造函数{m_pNext = NULL;}};int main(int atgc, char * argv[]) {CList<CNode> nodelist;//构造一个类模板实例for (int n = 0; n < 5; n++) //利用循环向链表中添加节点{CNode *pNode = new CNode(); //创建节点对象pNode->m_Data = n;//设置节点数据nodelist.AddNode(pNode); //向链表中添加节点}nodelist.PassList(); //遍历链表cout << endl;CList<CNet> netlist; //构造一个类模板实例for (int i = 0; i < 5; i++) //利用循环向链表中添加节点{CNet *pNode = new CNet(); //创建节点对象pNode->m_Data = 97 + i; //设置节点数据netlist.AddNode(pNode); //向链表中添加节点}netlist.PassList(); //遍历链表cout << endl;cin.get();return 0;}
阅读全文
0 0
- 链表类模板
- STL-单向链表类模板
- C++模板链表类
- C++链表类模板
- 模板
- 模板?
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 深度学习常用数据集
- [Android]代码实现ColorStateList及StateListDrawable
- c++ 67,68,69
- I/O多路转接之epoll
- 星级评分原理和实现
- 链表类模板
- spring 基于@Transactional注解的事务管理失败的几点可能性
- Spark基础:如何遍历dataframe
- 设计模式(四)— 简单工厂模式
- DBCP 源码初探
- nginx是如何处理请求的?
- Kaa IoT平台学习(一)
- ubuntu16.04下安装pycharm
- Lua,JavaScript的闭包和迭代器笔记