Cpp单链表操作的一个模板类.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cpp单链表操作的一个模板类

Cpp单链表操作的一个模板类 C++单链表操作 #ifndef __LINKEDLIST_HPP__ #define __LINKEDLIST_HPP__ #if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000 extern C { int exit(int); }; //单链表结点类定义 template class T //结点数据域data的类型以参数 (模板)形式提供 class Node { public: //公有成员 T data; //数据域,允许外部直接访问 private: //私有成员 NodeT *next; //指针域(链域),指向后继结点的指针 public: //公有成员 //构造函数(初始化data和next) Node(const T item, NodeT *pNext=NULL) : data(item), next(pNext){} //在当前结点之后插入指针p所指结点 void InsertAfter(NodeT *p) { if (!p) return; //若p为空,则返回 p-next = next; //将待插入结点p的next指向当前结点的next域 next = p; //将当前结点的next更新为待插入结点p } //删除当前结点的后继结点并返回被删除结点的地址 NodeT *DeleteAfter() { if (!next) return NULL; //若无后继(next为NULL),则返回 NodeT *pNext = next; //next不为空,则记录其地址(留待函数返回后做处理) next = next-next; //用后继结点(next)的后继来更改当前结点的next域 return pNext; //返回已记录下的待删除结点地址 } //返回指向当前结点的后继结点的指针 NodeT *NextNode() const { return next; } T GetData() const { return data; } void SetData(const T item) { data = item; } }; //单链表类定义 template class T class LinkedList { private: NodeT *front, *rear; //表头,表尾 NodeT *currptr; //指向当前结点的指针 int size; //表长(结点的个数) private: //生成新结点 NodeT *GetNode(const T item, NodeT *pNext = NULL) { NodeT *newNode; //新分配一结点存储空间并初始化数据成员 newNode = new NodeT(item, pNext); if (!newNode) { cerr 存储空间分配失败!程序将终止。 endl; exit(1); } return newNode; } //释放结点p void *freeNode(NodeT *p) { if (p) delete p; } private: //当链表为空时插入结点时的处理 int InsertNewNodeWhenListIsEmpty(const T item) { if (size 0) return 0; //不为空表,返回False(0) currptr = GetNode(item); front = currptr; rear = currptr; size ++; return 1; //在空表中插入了结点,返回True(1) } public: //构造函数 LinkedList() { front = NULL; rear = NULL; currptr = NULL; size = 0; } 超简单的线性表的插入 List.h class List { public: ??? List(int MaxListSize=10) ??? { ??????? maxSize=MaxListSize; ??????? element=new int[maxSize]; ??????? length=0; ??? } ??? ~List() ??? { ??????? delete []element; ??? } ??? bool IsEmpty() const//const:表示在函数中不可以修改对象的数据 ??? { ??????? r

文档评论(0)

haocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档