数据结构实用教程第二版答案-徐孝凯.docx

上传人:李司机 文档编号:6886905 上传时间:2024-03-15 格式:DOCX 页数:80 大小:142.23KB
返回 下载 相关 举报
数据结构实用教程第二版答案-徐孝凯.docx_第1页
第1页 / 共80页
数据结构实用教程第二版答案-徐孝凯.docx_第2页
第2页 / 共80页
数据结构实用教程第二版答案-徐孝凯.docx_第3页
第3页 / 共80页
数据结构实用教程第二版答案-徐孝凯.docx_第4页
第4页 / 共80页
数据结构实用教程第二版答案-徐孝凯.docx_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《数据结构实用教程第二版答案-徐孝凯.docx》由会员分享,可在线阅读,更多相关《数据结构实用教程第二版答案-徐孝凯.docx(80页珍藏版)》请在三一办公上搜索。

1、第一章绪习题一1.荀以下儿科用二元0表3的散信构,弑画出它的分别对应的招忐3当出呢多个关多时,对畜个关备画出构应的信枸,并或出它的分别属孑佝种色构Q(1)A=(K,R)羁中K=al,a2,a3.,anR=B=(K,R)总中K=a,b,c,d,e,f,g,h)R=rr=,)C=(KR)IWK=a,b,c,d,f,g,hR=rr=,(4)D=(K,R)更中K=1,2,345,6R=rr=(l,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)E=(K,RM中K=48,25,64,57,82,36,75,43R=rl,r2,r3rl=,r2=,3=,解:震填合储

2、构;星俵傕俱构;(3X4)星树型便构;数列储构C)H6均售老。2 .侵什二次多发式ax2+bx+c的一种抽或散花类型,偎定起名为QIAdratic,垓变型的政貂局都分为三个密彩所a、bWc,潺6局都为:(襦写出下面名一个承行的具体实理)。(1)初备化酸W咸黄ab知c(假定用录至型Quadratic定义成用),名个敢漏成用的默伏保为OoQuadraticInilQuadratic(floataa=0,floatbb=O,floatcc=0);解:QuadraticInitQuadratic(floataa,floatbb,floatcc)(Quadraticq;q.a=aa;q.b=bb;q.c

3、=cc;returnq;)儆芮个多发式加注,即使对面的备酸构加,并建和加的包果。QuadraticAdd(Quadraticq1,Quadraticq2);循:QuadraticAddCQuadraticq!,Quadraticq2);Quadraticq;q.a=ql.a+q2.a;q.b=ql.bq2.b;q.c=ql.c+q2.c;returnq;根屑诒定X的住耕算多发式的伟。floatEvaKQuadraticq,floatx);鼾:floatEvaKQuadraticq,floatx)(return(q.a*x*x+q.b*x+q.c);)/算力行ax2+bx+c=0的苻个实敢根,对

4、孑有安根、无安根加彳履安根方禧(印a=0)运三科情况惠四彳同的鬟散便,以便孑工行调,用备敢做不同的处理,intRoot(Quadraticq,float&rl,float=O)rl=(oat)(-q.bsqrt(x)(2*q.a);r2=(float)(-q.b-sqrt(x)(2*q.a);return1;)elsereturn0;)iz照ax*2+bx+c的格式(x2用x*2表5)就出二汉多发式,在就出时篡注仓上辟多敢为0的密,并当b加C的便为筏时,英韵不能出血加考。voidPrint(Quadraticq)鼾:voidPrint(Quadraticq)(if(q.a)coutq.aO)c

5、outM+Hq.bxM;elsecoutq.bO)cout,+,q.c;elsecoutq.c;coutx2,xl=x2加xl,=7cx2)return,;elseif(xl=x2)return-;elsereturn,;房时向袁卷电处C)(I)(2)将一个与符字中的雨花字符秋和双方的文序重新发要。循:voidReverse(char*p)(intn=strlen(p);for(inti=0;in/2;i+)charch;ch=pipi=pn-i-l;pn-i-l=ch;)房时向袁整度为O(n)(3)求一mdouble型及出an中的所有;之秉公。循:doubleproduct(doubleaj

6、ntn)(doublep=1;for(inti=0;in;i+)P*=ai;returnp;)机时向观点度为O(n)(4)计算Eni=OXi/i+1的伯。做:doubleAccumulate(doublex,intn)(doublep=l,s=l;for(inti=l;i=n;i+)p*=x;s+=p(i+l);)returns;)房时向飘空电幻O(n)假定一傩故国an中的备个元素侍编自O,200巨向曲,分别饶材出然G0,20),20,50),50,80),80,130),130,200等各巨向的元素个检够:intCount(inta,intn,intc5)/f)J.(c5倨存佞/铺果(出5=

7、20,50,80,130,201;用耒保存各佞御臣向的2限inti,j;for(i=0;i5;i+)ci=0;给数住c5中的备个元素盛法俗0for(i=0;in;i+)(if(ai200)return0;但国致侍0表5敢出中故篇有络,铳计失政for(j=0;j5;j+)/Aai所自巨向if(ai=nN=n的务传,Lin加COI为引用彭参,出聂对应宓叁的别名,英俗出无卷带(1.in=0;Col=0;for(inti=0;im;i+)for(intj=O;jaLinCol)Lin=i;Col=j;)用时向夏经度为O(m*n)4JF出以下各算法的功能并求出臭时向定点度。(1)intprime(int

8、n)(inti=2;intx=(int)sqrt(n);while(ix)return1;elsereturn0;福:狗断n盘5一个委觥,假依盘那C色致便1,看那C建OC扬.争注的时向0.点电均0(nl2)ointsuml(intn)intp=1,s=0;for(inti=l;i=n;i+)P*=i;s+=p;)returns;I福:/*Ei!(2杼为n,下行为i=l)的鱼,鱼时向的裒A度为O(n)。intsum2(intn)(ints=0;for(inti=l;i=n;i+)intp=l;for(intj=1;j=i;j+)P*=j;s+=p;)returns;)够:封算Ei!的鱼,时向豆点

9、度为0(n2)(4)intfun(intn)inti=l,s=l;while(sn)s+=+i;returni;)循:求出满足彳等式1+2+3+iNn的星Ji色,鱼时向互空度为O(nl2)0voidUseFile(ifstream&inp,intc10)假定inp所对应的文台中保存有n个鳌及(for(inti=0;ix)i=x%10;ci+;)鼾:利用酸勾C10中的备个元素ci对应佞耕inp随航行的整敢文臼中个色侵同为i的整敢个敢,时向袁经度为O(n)(6)voidmtable(intn)(for(inti=l;i=n;i+)for(intj=i;j=n;j+)COUtVi5vj“=setw(

10、2)i*jn;coutend1;)解:打印出一个.有n咎的乘法表,务iH(IWiWn)中有ni+l个乘法发,名个乘注物为i与j(iWjWn)的秉公,时向袁经度为0(n2)ovoidcmatrix(intaMN,i11td)MN为全局整型常变for(inti=0;iM;i+)for(intj=O;jN;j+)aiU*=d;I福:俄敢aMN中的右一个元素佝锌如以d的保,时向笑修电为O(M*N)(8)voidmatrimult(intaMNjntbNL,intcML)/inti,j,k;for(i=0;iM;i+)for(j=0;jL;j+)ci=O;for(i=0;iM;i+)for(j=0;jL

11、;j+)for(k=0;kN;k+)ciU+=aik*bkj;)解:短悠构乘,印aMNbNLcML,时向观点度为O(MxNxL)o5.遇咯解:voidlnitSet(Set&s)for(inti=Ijv=SETSIZEj+)s.mi=O;解:voidInitSet(Set&s,i11ta,i11tn)fot(inti=0;in;i+)s.mai=l;)弱:Setoperator+(Sets1,Sets2)Sets;InitSet(s);for(inti=1;i=SETSIZE;i+)if(sl.mi=l)s2.mi=l)s.mi=l;returns;)解:Setoperator*(Setsi,

12、Sets2)(Sets;InitSet(s);for(inti=l;i=SETSIZE;i+)if(sl.mi=1)&(s2.mi=l)s.mi=l;returns;解:BooleanoperatorA(intelt,Sets)(if(s.melt=l)returnTrue;elsereturnFalse;)解:voidlnisert(Set&s,intn)(s.mn=l;)解:voidDelete(Set&s,intn)s.mn=0;)解:ostream&operator(ostream&ostr,Set&s)ostrfor(inti=l;i=SETSIZE;i+)if(s.mi=l)ost

13、ri,;ostrendl;returnostr;)第二章线性表习题二1.解:(79,62,34,57,26,48)解:(26,34,48,57,62,79)解:(48,56,57,62,79,34)解:(56,57,79,34)解:(26,34,39,48,57,62)2.解:为3第版方便,偎定采用以下毓出格式表5单线健走的亍爸图;名个施等向的敢,龙表亍一个为老包点,英中第一个敌热为石寰伊,第二个敢提为后施信点的韭豺,第一个元素傕点前的表决养豺。1.(7(79,6),(62,5),(34,4),(57,3),(26,2),(48,0)2.(3(26,5),(34,2),(48,4),(57,6

14、),(62,7),(79,0)3. (2(48,8),(56,4),(57,6),(62,7),(79,5),(34,0)4.(8(56,4),(57,7),(79,5),(34,0)3.对孑LiSt房型的绫悔表,偏写出以下畜个第注C(I)M俵傕走中删除具有展J伟的后委并出击敢但,空出的色笈出展后一个石素修科,M在傕走处之那C盘3出错偿包并超出适行。解:ElemTypeDMValue(List&L)俵傕老中删匪勇有星J鱼的3点并出而致建,之出的色S/黑后一个2点侦科,但侵俵俊表处之那C区3出转程包并运出迄行(if(ListEmpty(L)ce,ListisEmpty!endl;exit(l);

15、)ElemTypex;x=L.list0;intk=0;for(inti=l;iL.size;i+)ElemTypey=L.listi;if(yx)x=y;k=i;)1.listk=L.listL.size-l;1.size;returnx;)(2)“俵傕走中删除第i个元素并出徐及退。解:intDeletel(List&L,inti)俵傕老中删除第i个元素吊出品政返国if(iL.size)cerrnIndexisoutrange!,endl;exit(l);)ElemTypex;x=L.listi-l;for(intj=i-1;jL.size-1;j+)1.listj=L.listj+l;1.

16、size;returnx;)何俵傕走中为i个元素色妄准人一个元素。解:voidInserl(List&L,inti,ElemTypex)而俵傕耒中貂i个元素色笈矗入一个元素(if(iL.size+l)cerr,Indexisoutrange!,endl;exit(l);)if(L.size=MaxSize)(cerrListoverflow!,i-l;j-)1.listj+l=L.listj;1.listi-l=x;1.size+;)(4)“在俊老中尉除久有会定俗X的所右元老,靖:voidDelete2(List&LiElemTypex)以俵傕表中删除勇有诠定俗X的所有元素(inti=0;wh

17、ile(iL.size)if(L.listi=x)for(intj=i+1;jL.sizr;j+)1.listj-1=L.listj;1.size;)elsei+;)“俵傕表中尉除臭侍在会定伟Sst之向(尊求SJ孑0的所有元素。解:voidDelete3(List&L,ElemTypes,ElemTypet)以俵傕走中删除英住在铅定住S彳。t之向的所有元素inti=0;while(i=s)&(L.listi=t)for(intj=i+1;jL.size;j+)1.listj-i=L.listj;1.size;)elsei+;)(6)A4有序忐中知除臭保自给定保S1之向(惠求SJ孑0的所布元素。

18、解:voidDelete4(ListfcUElemTypes,ElemTypet)有序表中锄除英便在诠定住S初t之初的所有元素(inti=0;WhiIe(iL.size)有序表L中布匹出丈孑务孑S的第一个为素if(L.listis)i+;elsebreak;if(iL.size)While(i+jL.size)&(L.listi+j=t)j+;求itS加l之向元素的个散for(intk=i+j;kMaxSize)ce,Listoverflow!,endl;exit(l);)inti=0j=O,k=O;while(iL1.size)&(jL2.size)if(Ll.listi=L2.1istj)

19、将Ll中的元素减铅L1.listk=Ll.listi;i+;)else将L2中的石素碳诒L1.listk=L2.1istj;j+;)k+;)while(iLl.size)将Ll中刺余的元素喊给L1.listk=Ll.listi;i+;k+;)whi!e(jL2.size)将L2中利余的元素裱给L1.listk=L2.1istj;j+;k+;)1.size=k;(8)M在俊表中甥险所有属保重氯的元素,使臭6弓有后素的住的不同,4对孑旗彼表(2,8,9,2,5,5,6,8,7,2),那C执打此W法后为(2,8,9,5,6,7)解:voidDelete5(List&L)以俵傕老中期隐所有臭街i豆的元

20、素,使臭所有元素的伟镐彳向(inti=0;while(iL.size)intj=i+l;while(jL.size)知像重重.伟为LlisUi的所有话委f(L.lstj=L.list)for(intk=j+1;knext;p韭而下一个G传序的传点将q储立提人到已陈序单缄表的表决q-next=HL;HL=q;)明检单表中的貂i个传点。解:voidDeletel(LNode*&HL,inti)删除单表中的第i个信点if(ilHL=NULL)cerrIndexisoutrange!,next;j+;)if(cp=NULL)cerr,Indexisoutrange!,next;elseap-next=

21、cp-next;deletec;)单缄表中在找出的有石素的展侍,垓伟出品政退彷,假侵单表为之,那C醒云出能偿并停止适舍。解:ElemTypeMaxValue(LNode*HL)乂单缄表中布报出所有元素的镀.伯,垓住小出教返(if(HL=NULL)cerrLinkedlistisempty!data;1.Node*p=HL-next;while(p!=NULL)if(maxdata)max=p-data;p=p-next;)returnmax;)桃材出单缄表中得点的便莓孑给定保X的得立数匚解:intCount(LNode*HL,ElemTypex)佞计出单缄表中错立的色绻孑镒定住X的储立政(in

22、tn=0;while(HL!=NULL)if(HL-data=x)n+;HL=HL-next;)returnn;)(5)福能一键能an建立一个单缄表,住单缄表中为素的文序与an中元素的虎序和,并使垓算法的时向观整电为O(n)。够:voidCreate(LNode*&HL,ElemTypea,intn)根据一傩数住an建立一个单箍忐(InitList(HL);for(inti=n-1;i=0;i-)InsertFront(HL,ai;)(6)将一个单表新嬉成有序单表CI施:voidOrderList(LNode*&HL)将一个单畿表重盘成布序单缄表(1.Node*P=HL;p韭佝清处理的貂一个储

23、点,而能韭佝感走义德点HL=NULL;/HL仍为G建立的有序表的表决瑟豺,林能伟为交while(p!=NULL)(把鹰单表中的储点俵次选打有序1.Node*q=p;/q施而满处理的信苴p=p-next;p韭痴下一个GAh理的修立1.Node*ap=NULL,*cp=HL;/cp韭而希序表中涛吮拟的信点,ap韭何属韵胞储立while(cp!=NULL)为准入q修立孑拣渔人色if(q-datadata)break;else(ap=cp;cp=cp-next;)将qit立准人i,)ap加cpxfhkoppujq-next=cp;if(ap=NULL)HL=q;elseap-next=q;)(7)将芮

24、个有序单表合并成一个有存单表,合并后使鹰有单表处之。解:LNode*Mergel(LNode*&p1,LNode*&p2)将苻个有序单缁表合并成一个有序单缄表1.Nodea;a(2或行为信果的有序单2版表的表决附加偌立,这样便孑处理,处理信束后他a修立的雀豺域的伟1.NOde*p=&a;P就何修果的有序单催表的忐星信点p-next=NULL;初4g韭而忐袋附加储点WhiIe(P1!=NULL)&(p2!=NULL)处理芮个忐”之的借况if(p1-datadata)p-next=pl;pl=pl-next;)else(p-next=p2;p2=p2-;)p=p-next;)if(pl!=NULL

25、)p-next=pl;if(p2!=NULL)p-next=p2;pl=p2=NULL;returna.next;)(8)格踞芮个有序单走变成一个新的有序M,鹰有单走修据彳我。4僦定芮个有序单缄老中的石素为(2,8,10,20)(3,8,9,15,16),那Z变成的新单箍表中的元素为(2,3,8,8,9,10,15,16,20)o解:LNode*Merge2(LNode*p1,LNode*p2)根据苻个有序单缄表生成一个新的有序单缄表1.NOdea;用a行为新的有序单缄表的忐头附加修点1.Node*p=&a;p韭向储果有序单表的表尾储立p-next=NULL;初的稣而表头的加信.也while(

26、pl!=NULL&(p2!=NULL)处理高个忐”之时的借况1.Node*newptr=newLNode;if(p1-datadata)出pl-data建2珞储点,然后PI韭纣后籍newptr-data=p1-data;pl=pl-next;)else/出p2-data建立珞储立,然后p2韭纣后籍newptr-data=p2-data;p2=p2-next;将newptr储点准入列传果的有序表的走尾p-next=newptr;p=newptr;)while(pl!=NULL)惚俣处理Pl单表中利余的信立1.Node*newptr=newLNode;newptr-data=p1-data;pl=

27、pl-next;p-next=newptr;p=newptr;)while(p2!=NULL)(惚仪处理p2单缄忐中对分的修立1.Node*newptr=newLNode;newptr-data=p2-data;p2=p2-next;p-next=newptr;p=newptr;)p-next=NULL;returna.next;)(9)根据一个后素走型处整型的单表生成芮个单表,馍得第一个单表中包杳鹰单表中所有?素苗的仔敢的储立,使得为二个单缝表中包含正单缄表中所有元素伟为陶政的储点。鹰有单表住持不盍。麟:voidSeParate(LNode*HL,LNode*&pl,LNode*&p2)枢孱

28、一个单缄表HL松修伴折分生成苻个单表Plp21.Nodea,b;/a检b储点分别6处Plp2单表的表决附加德立1.Node*tl=&a,*t2=&b;/tlLt2分别行为韭而plLp2单钺表的表屋储立,勃的韭而表决附加错立1.node*p=HL;while(p!=NULL)(名循环一穴产生一个新修点,并把它卷加到pl或p2单缝表的未1.Node*newptr=newLNode;if(p-data%2=1)newptr-data=p-data;tl-next=newptr;tl=newptr;)elsenewptr-data=p-data;t2-next=newptr;t2=newptr;)p=

29、p-next;)11-next=t2-next=NULL;pl=a.next;p2=b.next;/zlJg苻个单缝表的表决传点的韭豺分别成诒PI依p2在)6.偏与一个等注,使用走头附加修立的循环单缄表翻发内勃夫(JOSePhUS)向魅,他向巡盘:般有n个人生G一茶国里周,四妥个A打髭抠敢,密到m的人出列(印离仔生色,不参加以后的挺盆),堤卷出列的下一个A畀能重新”1混敢,敢刽m的Aa出列,4此下工上到的有A都出列为止,弑求出它们的出列次序。偎段,由n=8、m=4时,他住以第一个X假定名个人的偏看俵穴为l,2.,n)丹能抠散,那么到的出列文序为:4,8,5,2,1,3,7,6。此等注尊求以n、

30、mos(假定第S个A号华貂一次抠故)6为伊参口解:voidJosephus(intn,intm,ints)使用带表决附加储点的循环单缄表解决的怒走向胭生成表外附加德立,此时循环单缄表处之1.Node*HL=newLNode;HL-next=HL;inti;H生成含有n个修点、储立体泛处l,2,.n的带走头偌点的循环单箍表for(i=n;i=l;i)生成新的储立1.Node*newptr=newLNode;newptr-data=i;施新的修立准入到表义newptr-next=HL-next;HL-next=newptr;)表以HAg顺序在俄出第S个偌立,对应第一个巧熊抠散的A1.Node*ap

31、=HL,*cp=HL-next;for(i=l;inext;假般CP捕何3表决附加修立,那C仍需后福叩加CP稣豺,使之我而表决信立if(cp=二HL)ap=HL;cp=HL-next;)他汉使n-1个A出列fbr(i=l;in;i+)呦库布找出G出列的A,即为循环修束后CP所韭布的偌立for(intj=l;jnext;if(cp=二HL)ap=HL;cp=HL-next;)皎出CP信立的侍,印出列的Acoutdatanext=cp-next;deletec;使Cp就向被朗像传点的后施偌点cp=ap-next;偃W&cp韭何3走次附加偌立,那Z后卷ap”cp韭豺if(cp=HL)ap=HL;cp

32、=HL-next;)俊然.后一个人也列coutnext-datanext;deleteHL;)7.对孑自俵性走如象散能虎型中定义的怎一个演行,写出借立为型为LNode的带头附加储立的循环单缄表R实猊的对应算O法能化单缄表做:voidInitList(LNode5isHL)HL-next=HL;将单缝表赛之)甥像单2或忐中的的花信立,使之成为一个之表voidClearList(LNode*HL)(1.Node*cp,*np;cp=HL-next;/就向第一个储点的养豺咸,诒Cpwhile(cp!=HL)/通历单缝表,而每饯立W名一个储点。np=cp-next;/如存下一个储点的旄豺。delete

33、cp;/J险由的储立。cp=npnext=HL;/更单缝表为空)得到单缄走的长度intListSize(LNode*HL)(1.Node*p=HL-next;inti=0;while(p!=HL)i+;p=p-next;returni;)桧布单表盘4为交intListEmpty(LNode*hl)(return(HL-next=HL);)得到单表中貂os个信点中的元素ElemTypeGetElem(LNode*HL,intpos)(if(posl)cerrposisoutrange!,next;inti=0;while(p!=HL)i+;if(i=pos)break;p=p-next;)if(

34、p!=HL)returnp-data;elsecerrposisoutrange!,next;while(p!=HL)coutdatanext;)coutnext;while(p!=HL)if(p-data=item)item=p-data;return1;)elsep=p-next;returnO;)(8)更新单表中勇有诒定伟的貂一个为委intUpdata(LNode*HL,constElemType&item)(1.Node*p=HL-next;While(P!=HL)在找元素if(p-data=item)break;elsep=p-next;if(p=HL)return0;else委p-

35、data=item;return1;)何单表的未留麽入一个?素voidInsertRear(LNode*HL,constElemType&item)(1.Node*newptr;newptr=newLNode;newptr-data=item新元素盛诒动右信或*newptr的伯嫉C1.Node*p=HL;WhiIe(Pnext!=HL)乂表头看能遍历到展后一个储点为上。p=p-next;newptr-next=HL;p-next=newptr;/e新襦.支线盘列表电o)仇向单忐的走头准入一个为素voidInsertFront(LNode*HL,constElemType&item)(1.Node*newptr;newptr=newLNode;newptr-data=item;newptr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号