数据结构实用教程第二版答案-徐孝凯.docx
第一章绪习题一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=<a,b>,<b,c>,<c,d>,<d,e>,<e,f>,<f,g>,<g,h>)C=(KR)IWK=a,b,c,d,f,g,hR=rr=<d,b>,<d,g>,<b,a>,<b,c>,<g,e>,<g,h>,<e,f>(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=<48,25>,<25,64>,<64,57>,<57,82>,<82,36>,<36,75>,<75,43>r2=<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>,<36,43>3=<25,36>,<36,43>,<43,48>,<48,57>,<57,64>,<64J5>,<75,82>解:震填合储构;星俵傕俱构;(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=cc;returnq;)儆芮个多发式加注,即使对面的备酸构加,并建和加的包果。QuadraticAdd(Quadraticq1,Quadraticq2);循:QuadraticAddCQuadraticq!,Quadraticq2);Quadraticq;q.a=ql.a+q2.a;q.b=ql.b÷q2.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的苻个实敢根,对孑有安根、无安根加彳履安根方禧(印a=0)运三科情况惠四彳同的鬟散便,以便孑工行调,用备敢做不同的处理,intRoot(Quadraticq,float&rl,float<fcr2);循:intRoot(Quadraticq,float&rl,float&r2)(if(q.a=0)return-1;floatx=q.b*q.b-4*q.a*q.c;if(x>=O)rl=(oat)(-q.b÷sqrt(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)cout<<q.a<<,x*2"if(q.b)if(q.b>O)cout«M+H«q.b«"xM;elsecout<<q.b<<',x,'if(q.c)if(q.c>O)cout<<,+,<<q.c;elsecout<<q.c;cout<<end1;)3 .用c+向数提述以下冬一个"注,并分别求出它们的时向裒点应。(1)说拟同一简单米型的芮个散据xl"x2的犬J,对孑xl>x2,xl=x2加xl<x2这三科不间情义分别值'>',=7c'<,穹符。偎定简单变型用SimpleType表3,它可通过typedef语仞定义为色一筒单米型。解:charcompare(SimpleTypeX1,SimpleTypex2)(if(xl>x2)return,>,;elseif(xl=x2)return-'elsereturn'<,;房时向袁卷电处C)(I)(2)将一个与符字中的雨花字符秋和双方的文序重新发要。循:voidReverse(char*p)(intn=strlen(p);for(inti=0;i<n/2;i+)charch;ch=pipi=pn-i-l;pn-i-l=ch;)房时向袁整度为O(n)(3)求一mdouble型及出an中的所有;之秉公。循:doubleproduct(doubleajntn)(doublep=1;for(inti=0;i<n;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=20,50,80,130,201;用耒保存各佞御臣向的2限inti,j;for(i=0;i<5;i+)ci=0;给数住c5中的备个元素盛法俗0for(i=0;i<n;i+)(if(ai<0ai>200)return0;但国致侍0表5敢出中故篇有络,铳计失政for(j=0;j<5;j+)/Aai所自巨向if(ai<dj)break;cj+;使佞材的应巨向的?素信1)return1;但国及侍1表云铳计成功)房时向夏点鹿为O(n)(6)八二锥螯型散国am11n中在我出最£元素所在的打、列下母。循:voidfind(intaMN,intm,intn,int&Lin,int&Col)/M"N为全局常于,应满足M>=n"N>=n的务传,Lin加COI为引用彭参,出聂对应宓叁的别名,英俗出无卷带(1.in=0;Col=0;for(inti=0;i<m;i+)for(intj=O;j<n;j+)if(aij>aLinCol)Lin=i;Col=j;)用时向夏经度为O(m*n)4JF出以下各算法的功能并求出臭时向定点度。(1)intprime(intn)(inti=2;intx=(int)sqrt(n);while(i<=x)if(n%i=O)break;i÷+;)if(i>x)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!的鱼,时向豆点度为0(n2)(4)intfun(intn)inti=l,s=l;while(s<n)s+=÷+i;returni;)循:求出满足彳等式1+2+3+iNn的星Ji色,鱼时向互空度为O(nl2)0voidUseFile(ifstream&inp,intc10)假定inp所对应的文台中保存有n个鳌及(for(inti=0;i<10;i+)ci=0;intx;while(inp>>x)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+)COUtV<i<<5'<vj<<“="<<setw(2)<<i*j<<"n;cout<<end1;)解:打印出一个£.有n咎的乘法表,务iH(IWiWn)中有ni+l个乘法发,名个乘注物为i与j(iWjWn)的秉公,时向袁经度为0(n2)ovoidcmatrix(intaMN,i11td)M"N为全局整型常变for(inti=0;i<M;i+)for(intj=O;j<N;j+)aiU*=d;I福:俄敢aMN中的右一个元素佝锌如以d的保,时向笑修电为O(M*N)(8)voidmatrimult(intaMNjntbNL,intcML)/inti,j,k;for(i=0;i<M;i+)for(j=0;j<L;j+)ci=O;for(i=0;i<M;i+)for(j=0;j<L;j+)for(k=0;k<N;k+)ciU+=aik*bkj;)解:短悠构乘,印aMN×bNLcML,时向观点度为O(MxNxL)o5.遇咯解:voidlnitSet(Set&s)for(inti=Ijv=SETSIZEj+)s.mi=O;解:voidInitSet(Set&s,i11ta,i11tn)fot(inti=0;i<n;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;)解:Setop