第十章类模板课后编程题目答案(共17页).doc

上传人:飞****2 文档编号:14037412 上传时间:2022-05-02 格式:DOC 页数:17 大小:46KB
返回 下载 相关 举报
第十章类模板课后编程题目答案(共17页).doc_第1页
第1页 / 共17页
第十章类模板课后编程题目答案(共17页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《第十章类模板课后编程题目答案(共17页).doc》由会员分享,可在线阅读,更多相关《第十章类模板课后编程题目答案(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上1。设计一个类模板,其中包含数据成员Tan以及对其进行排序的成员函数Sort(),模板参数T可实例化成字符串。解;如果T仅仅可以实例化成基本数据类型与char*类型的字符串,可通过重载sort()实现,程序如下:#include #include template class Arrayprivate:T an;public:void sort(double) for (int i=0;in-1;i+)for (int j=i+1;jaj)T t;t=ai;ai=aj;aj=t;void sort(char *)for (int i=0;in-1;i+)for (in

2、t j=i+1;j0)T t;t=ai;ai=aj;aj=t;void disp()for (int i=0;in-1;i+)if (ai!=NULL)coutai,t;elsecout,t;if (ai!=NULL)coutaiendl;elsecoutendl;Array(T a)for (int i=0;iai=ai;void main()float f=1.2,2.3,7.7,4,3,4,2.3;Array a1(f);a1.sort(f0);a1.disp();char * a6=a,abc,ABC,abcd; Array a2(a);a2.sort(a0);a2.disp();ch

3、ar c=a,b,C,2;Array a3(c);a3.sort(c0);a3.disp();如果T的类型可以实例化成自定义的字符串类String类型,需要重载赋值运算符=,插入运算符,分别用于进行字符串赋值,输出,比较。程序如下:#include #include using namespace std;class Stringprivate:char *Str;int len;public:String(int n=0)Str=NULL;len=n;String(const char *p)len=strlen(p);Str=NULL;if (len!=0)Str=new charlen+

4、1;strcpy(Str,p);String(String & r)len=r.len;if(len0)Str=new charlen+1;strcpy(Str,r.Str);String()if (len0)delete Str;String &operator=(const String & r)if (len0)delete Str;Str=NULL;len=r.len;if(len0)Str=new charlen+1;strcpy(Str,r.Str);return *this;bool operator (const String &r)if (Str=NULL)return fa

5、lse;if (Str!=NULL & r.Str=NULL)return true;int n=(lenr.len?len:r.len);for (int i=0;in;i+)if (Strir.Stri)return true;return false;friend ostream &operator(ostream &output,const String &s)if (s.Str!=NULL)outputs.Str;return output;template class Arrayprivate:T an;public:void sort() for (int i=0;in-1;i+

6、)for (int j=i+1;jaj)T t;t=ai;ai=aj;aj=t;void disp()for (int i=0;in-1;i+)coutai,t;coutaiendl;Array(T a)for (int i=0;iai=ai;void main()float f=1.2,2.3,7.7,4,3,4,2.3;Array a1(f);a1.sort();a1.disp();String a6=a,abc,ABC,abcd; Array a2(a);a2.sort();a2.disp();2.设计一个类模板,其中包括数据成员T an以及在其中进行查找数据元素的函数int searc

7、h(T)模板参数T可实例化成字符串。#include #include using namespace std;class Stringprivate:char *Str;int len;public:String(int n=0)Str=NULL;len=n;String(const char *p)len=strlen(p);Str=NULL;if (len!=0)Str=new charlen+1;strcpy(Str,p);String(String & r)len=r.len;if(len0)Str=new charlen+1;strcpy(Str,r.Str);String()if

8、 (len0)delete Str;String &operator=(const String & r)if (len0)delete Str;Str=NULL;len=r.len;if(len0)Str=new charlen+1;strcpy(Str,r.Str);return *this;bool operator =(const String &r)if (len!=r.len) return false;if (len=0) return true;for (int i=0;ilen;i+) if (Stri!=r.Stri)return false;return true;fri

9、end ostream &operator(ostream &output,const String &s)if (s.Str!=NULL)outputs.Str;return output;template class Arrayprivate:T an;public:int search(T key) for (int i=0;in;i+)if (ai=key)return i;return -1;void disp()for (int i=0;in-1;i+)coutai,t;coutaiendl;Array(T a)for (int i=0;iai=ai;void main()floa

10、t f=1.2,2.3,7.7,4,3,4,2.3;Array a1(f);couta1.search (2.3)endl;String a6=a,abc,ABC,abcd; Array a2(a);couta2.search();3.完善本章的Student类模板,使之可以添加,删除,查询学生记录,对学生成绩进行排序。#include #include using namespace std;class Stringprivate:char *Str;int len;public:String(int n=0)Str=NULL;len=n;String(const char *p)len=s

11、trlen(p);Str=NULL;if (len!=0)Str=new charlen+1;strcpy(Str,p);String(String & r)len=r.len;if(len0)Str=new charlen+1;strcpy(Str,r.Str);String()if (len0)delete Str;String &operator=(const String & r)if (len0)delete Str;Str=NULL;len=r.len;if(len0)Str=new charlen+1;strcpy(Str,r.Str);return *this;bool ope

12、rator =(const String &r)if (len!=r.len) return false;if (len=0) return true;for (int i=0;ilen;i+) if (Stri!=r.Stri)return false;return true;friend ostream &operator(ostream &output,const String &s)if (s.Str!=NULL)outputs.Str;return output;template class Studentprivate:int n;TNO StudentIDnum;TScore s

13、corenum;public:void append(TNO ID,TScore s);void Delete(TNO ID);int search(TNO);void sort();void DispAll();Student() n=0;template void Student:append(TNO ID,TScore s)if(nnum)StudentIDn=ID;scoren=s;n+;template void Student:Delete(TNO ID) for(int i=0;in;i+)if (StudentIDi=ID)for(int j=i;jn;j+)StudentID

14、j=StudentIDj+1;scorej=scorej+1;n-;template int Student:search(TNO no)for (int i=0;in;i+)if (StudentIDi=no)return i+1;return 0;template void Student:sort()for(int i=0;in-1;i+)for (int j=i+1;jn;j+)if (scoreiscorej)TScore ts;TNO tn;ts=scorei;tn=StudentIDi;scorei=scorej;StudentIDi=StudentIDj;scorej=ts;S

15、tudentIDj=tn;template void Student:DispAll()for (int i=0;in;i+)coutStudentIDitscoreiendl;void main()Student computer1; computer1.append(,70.5);computer1.append(,85);computer1.append(,69);computer1.append(,92);coutbefore sortendl;computer1.DispAll();computer1.sort();coutafter sortendl;computer1.DispA

16、ll();Student computer2;String S1(); String S2();computer2.append(S1,70.5);computer2.append(S2,85);computer2.append(,69);computer2.append(,92);coutbefore sortendl;computer2.DispAll();computer2.sort();coutafter sortendl;computer2.DispAll();coutafter deleteS1tS2endl;computer2.Delete(S1);computer2.Delet

17、e(S2);computer2.DispAll();coutcomputer2.search(S2);4,设计一个单向链表类模板,节点数据域中数据从小到大排列,并设计插入,删除节点的成员函数。#include using namespace std;template class ListNode private:TYPE data;ListNode * next; static ListNode * CurNode; static ListNode * head; public:ListNode():next(NULL) head=CurNode=this;ListNode(TYPE NewD

18、ata):data(NewData),next(NULL)void InsertNode(TYPE NewNode);void DeleteNode(TYPE NewNode);void DispList();void DelList();template ListNode * ListNode:CurNode;template ListNode * ListNode:head;template void ListNode:InsertNode(TYPE NewData)ListNode *PreNode,*TempNode;PreNode=head;CurNode=PreNode-next;

19、while(CurNode!=NULL&CurNode-datanext;if (CurNode=NULL)PreNode-next=new ListNode(NewData);elseTempNode=new ListNode(NewData);TempNode-next=CurNode;PreNode-next=TempNode;template void ListNode:DeleteNode(TYPE NewData)ListNode *PreNode;PreNode=head;CurNode=PreNode-next;while(CurNode!=NULL&CurNode-datan

20、ext;while(CurNode!=NULL&CurNode-data=NewData)PreNode-next=CurNode-next;delete CurNode;CurNode=PreNode-next;template void ListNode:DispList()CurNode=head-next;while(CurNode!=NULL)coutdatanext;template void ListNode:DelList()ListNode *q; CurNode=head-next;while(CurNode!=NULL) q=CurNode-next; delete Cu

21、rNode; CurNode=q; head-next=NULL;void main() ListNode CList; CList.InsertNode(B); CList.InsertNode(A); CList.InsertNode(C); CList.InsertNode(A); CList.DispList(); CList.DeleteNode(A); coutafter delet Aendl; CList.DispList();5,利用Stack类模板计算不含括号的四则运算式的值。#includeusing namespace std;template class Stack

22、private: int size; int top; T* space; public: Stack(int=10); Stack() delete space; bool push(const T&); T pop(); bool IsEmpty() const return top=size; bool IsFull() const return top=0; ;template Stack :Stack(int size) this-size=size; space=new Tsize; top=size;template bool Stack :push(const T& eleme

23、nt) if(!IsFull() space-top=element; return true; return false;template T Stack :pop() if(!IsEmpty() return spacetop+; return 0;template T str2num(char *str)char tmpstr20;strcpy(tmpstr,str);int i=0;while(tmpstri=0|tmpstri=.)i+;tmpstri=0; return atof(tmpstr);template T ProcExp(char *p)T anum20;char aop20;int i=0;Stacksop(20);Stacksnum(20);T num1;while(*p!=0)anumi=str2num(p);while(*p=0|*p=.)p+;if (*p=0)break;aopi=*p;p+;i+;int j=0;if (i0)snum.push(anumj);while (jfrm; coutProcExp(frm)endl; coutProcExp(frm)endl;专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁