您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 理论文章 > 2014春第四次上机练习3月31日(模板练习题1)
1.建立函数模板FindX,完成在数组中查找给定值X的操作,数组与X作为函数形参;不能在数组中找到X时,返回-1;能找到X时,返回X的下标。在main()函数中,定义并初始化不同数据类型的数组(int,double,char),然后输入需查找的值,利用函数模板实例化模板函数,进行查找,并输出查找结果。附加思考:自定义类Student(数据属性:学号,姓名,成绩),建立对象数组并初始化,利用函数模板实例化模板函数,按照学号或者姓名、成绩查找数组中相应的对象。#includeiostreamusingnamespacestd;templatetypenameTintFindX(Ta[],TX,intn){for(inti=0;in;i++)if(a[i]==X)returni;return-1;}templatetypenameTvoidoutput(Ta[],intn){for(inti=0;in;i++)couta[i]'';coutendl;return;}intmain(){inta1[]={1,2,3,5,7,11,13,17,19},t1;doublea2[]={1.23,2.45,3.14,4.56,5.89,6.23},t2;chara3[]=ABCDEfghij,t3;intn1=9,n2=6,n3=10;coutInputanintegertofindina1:;cint1;coutFindt1ina1:FindXint(a1,t1,n1)endl;coutInputadouble-precisionnumbertofindina2:;cint2;coutFindt2ina2:FindXdouble(a2,t2,n2)endl;coutInputachartofindina3:;cint3;coutFindt3ina3:FindXchar(a3,t3,n3)endl;return0;}2.修改例题6.3(P192-195)顺序表类模板(1)添加成员函数boolInsertBegin(T&x),将x插入到顺序表的表头,操作完成返回true;(2)添加成员函数boolDeleteEnd,删除顺序表的最后一个元素,操作完成返回true;(3)添加成员函数boolExchangeData(inti,intj),将数组中第i位元素与第j位元素互换,完成后返回true.;(4)添加成员函数boolMoveDataToEnd(inti,intj),将数组中第i位到第j位元素都移动到数组末尾,完成后返回true.;(5)添加成员函数seqlist&LinkSeq(seqlist&s),将同类型的顺序表类对象s中的数组元素全部添加在本对象中的数组后,返回本对象。(6)重载操作符。booloperator(seqlist&s)。与同类型的顺序表类对象s中的数组对比,本对象数组元素比s的数组元素大,返回ture,否则返回false。(7)在main函数中测试以上成员函数和重载函数,并将测试结果输出,保存在文件result.txt。#includeiostream#includefstreamusingnamespacestd;ofstreamfout(result.txt);templatetypenameT,intsizeclassseqlist{Tslist[size];intMaxsize;intlast;public:seqlist(){last=-1;Maxsize=size;}intLength()const{returnlast+1;}boolInsert(T&x,inti);/*intFind(T&x)const;boolIsIn(T&x);boolRemove(T&x);intNext(T&x);intPrior(T&x);boolIsEmpty(){returnlast==-1;}boolIsFull(){returnlast==Maxsize-1;}TGet(inti){returni0||ilast?exit(1):slist[i];}*/T&operator[](inti);boolInsertBegin(T&x);boolDeleteEnd();boolExchangeData(inti,intj);boolMoveDataToEnd(inti,intj);seqlist&LinkSeq(seqlist&s);booloperator(seqlist&s);voidcoutput(){for(inti=0;i=last;i++)coutslist[i]'';coutendl;return;}voidfoutput(){for(inti=0;i=last;i++)foutslist[i]'';foutendl;return;}};templatetypenameT,intsizeboolseqlistT,size::Insert(T&x,inti){intj;if(i0||ilast+1||last==Maxsize-1)returnfalse;else{last++;for(j=last;ji;j--)slist[j]=slist[j-1];slist[i]=x;returntrue;}}/*templatetypenameT,intsizeintseqlistT,size::Find(T&x)const{inti=0;while(i=last&&slist[i]!=x)i++;if(ilast)return-1;elsereturni;}templatetypenameT,intsizeboolseqlistT,size::IsIn(T&x){inti=0;boolfound=0;while(i=last&&!found)if(slist[i]!=x)i++;elsefound=1;returnfound;}templatetypenameT,intsizeboolseqlistT,size::Remove(T&x){inti=Find(x),j;if(i=0){last--;for(j=i;j=last;j++)slist[j]=slist[j+1];returntrue;}returnfalse;}templatetypenameT,intsizeintseqlistT,size::Next(T&x){inti=Find(x);if(i=0&&ilast)returni+1;elsereturn-1;}templatetypenameT,intsizeintseqlistT,size::Prior(T&x){inti=Find(x);if(i0&&i=last)returni-1;elsereturn-1;}*/templatetypenameT,intsizeT&seqlistT,size::operator[](inti){if(ilast+1||i0||i=Maxsize){cout下标出界!endl;exit(1);}if(ilast)last++;returnslist[i];}templatetypenameT,intsizeboolseqlistT,size::InsertBegin(T&x){if(last==Maxsize-1)returnfalse;last++;for(inti=last;i0;i--)slist[i]=slist[i-1];slist[0]=x;returntrue;}templatetypenameT,intsizeboolseqlistT,size::DeleteEnd(){if(last==-1)returnfalse;last--;returntrue;}templatetypenameT,intsizeboolseqlistT,size::ExchangeData(inti,intj){if(i0||ilast||j0||jlast){coutError:Illegalposition!endl;returnfalse;}Tt;t=slist[i];slist[i]=slist[j];slist[j]=t;returntrue;}templatetypenameT,intsizeboolseqlistT,size::MoveDataToEnd(inti,intj){if(i0||ilast||j0||jlast||ij){coutError:Illegalrange!endl;returnfalse;}Tt[size];intk,q=0;for(k=i;k=j;k++)t[q++]=slist[k];for(k=i;k=i+last-j-1;k++)slist[k]=slist[k+j-i+1];q=0;for(k=i+last-j;k=last;k++)slist[k]=t[q++];returntrue;}templatetypenameT,intsizeseqlistT,size&seqlistT,size::LinkSeq(seqlist&s){if(Length()+s.Length()Maxsize){coutError:OutofMaxsize!endl;exit(1);}inti;for(i=0;is.Length();i++)slist[last+i+1]=s[i];last+=s.Length();return*this;}templatetypenameT,intsizeboolseqlistT,size::operator(seqlist&s){inti=0;while(ilast&&i(s.Length()-1)){if(slist[i]s[i])returntrue;i++;}returnfalse;}intmain(){seqlistint,100s1;seqlistint,100s2;inti,n,a1[5]={2,3,5,7,11},a2[5]={13,17,19,23,29};for(i=0;i5;i++)if(!s1.Insert(a1[i],i)){coutError!endl;break;}for(i=0;i5;i++)if(!s2.Insert(a2[i],i)){coutError!endl;break;}couts1:;s1.coutput();couts2:;s2.coutput();fouts1:;s1.foutput();fouts2:;s2.foutput();s1.LinkSeq(s2);coutLinks2tos1:;s1.coutput();foutLinks2tos1:;s1.foutput();coutPleaseinputanumbertoinsert:;cinn;s1.InsertBegin(n);coutInserttothebeginofs1:;s1.coutput();foutInserttothebeginofs1:;s1.foutput();s1.DeleteEnd();coutDeletetheendofs1:;s1.coutput();foutDeletetheendofs1:;s1.foutput();do{coutPleasesettwopositionstoexchange:;cinin;}while(!s1.ExchangeData(i,n));coutExchanges1[
本文标题:2014春第四次上机练习3月31日(模板练习题1)
链接地址:https://www.777doc.com/doc-4766925 .html