c++数据结构编程模板定义解析教程.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c数据结构编程模板定义解析教程

//LinearList.h#includeiostreamusing namespace std;templateclass T//定义模板的关键字和模板形参表class Linearlist//定义类模板的关键字和类模板名{public:Linearlist (intLLMaxSize);//有参构造函数原型声明,创建空表。~Linearlist();//析构函数原型声明,删除表LinearlistT Insert(int k, constTx);//函数返回类型为该函数的引用,参数按引用传递(引用调用),形参值的变化会直接影响到相应的实参值,使用const引用只能访问所引用对象的值而不能修改其值。在第k个位置插入元素x,返回插入后的线性表boolGetData(intk,Tx);//按位置取元素LinearlistT DeleteByIndex(intk,Tx);//删除表中第k个元素,并保存到x中,返回删除后的线性表LinearlistT Exchenge(Tx);private:int length;intMaxsize;T *element;};templateclass T//在类模板定义外定义成员函数,必须在函数名前面加上类名,用作用域限定符“::”声明函数属于哪个类(也可以在上边类体中直接定义,此时不需要在函数名前面加上类名,因为函数属于哪个类是不言而喻的)。类模板的成员函数定义不允许在源文件,只能在头文件LinearlistT::Linearlist(intLLMaxSize){Maxsize=LLMaxSize;element=new T[LLMaxSize];//动态内存分配length=0;}templateclass TLinearlistT::~Linearlist(){delete []element;//当指针所指向的堆内存空间只包含一个元素时,可将[]省略。在使用new分配堆内存时要区分()和[],()中的表达式指定了内存的初值,而[]中的表达式指定了元素数目}templateclass TLinearlistTLinearlistT::Insert(int k, constTx)//在第k个位置插入元素x,返回插入后的线性表{if(k1||klength+1)couterror!;elseif(length==Maxsize)coutfull;else{for(int i=length;ik-1;i--)//1=k=length+1element[i]=element[i-1];//移动元素element[k-1]=x;//插入元素length++;//表长加1}return *this;//显式使用this指针(隐含于非静态成员函数中的特殊指针),因为非静态成员函数(非静态成员属于对象,静态成员属于类,不属于任何对象)需要返回的是对象本身(或对象地址),也可写为return this}templateclass TboolLinearlistT::GetData(intk,Tx)//按位置取元素{if(k1||klength)return false;else{x=element[k-1];return true;}}templateclass TLinearlistT LinearlistT::DeleteByIndex(intk,Tx)//删除表中第k个元素,并保存到x中,返回删除后的线性表{if(GetData(k,x)){for(int i=k-1;ilength-1;i++)element[i]=element[i+1];//移动元素length--;//表长减1}elsecouterror!;return *this;}templateclass TLinearlistT LinearlistT::Exchenge(Tx){for(int k=0;klength;k++){if(GetData(k,x))//取第k个元素{if(x.score60)//x为结构体变量名,score为成员名{Insert(1,x);//插入到第1个位置 return DeleteByIndex(k+1,x);//返回删除第k+1个元素(即原来的第k个元素)后的线性表}}}return *this;}//Student.h#ifndef student//条件编译:对某段程序代码中满足条件的语句进行编译。若student不是使用#define定义的宏,则编译下一行程序段#define student//允许只有宏名没有字符串,作用是用于条件编译,表示定义此标识符#includeiostream#includestring//包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档