2016数据结构基础(C语言版)习题及答案(英文版).docx
《2016数据结构基础(C语言版)习题及答案(英文版).docx》由会员分享,可在线阅读,更多相关《2016数据结构基础(C语言版)习题及答案(英文版).docx(171页珍藏版)》请在冰豆网上搜索。
数据结构基础(C语言版)
习题及答案
(英文版)
目录
CHAPTER1 2
CHAPTER2 24
CHAPTER3 44
CHAPTER4 63
CHAPTER5 79
CHAPTER6 96
CHAPTER7 125
CHAPTER8 139
CHAPTER9 140
CHAPTER10. 142
CHAPTER11. 147
CHAPTER12. 170
第
109页 171页
共
CHAPTER1
Chapter1,Pages16-17
Problem1.aThisstatementisapoorlyphrasedversionofFermat'slasttheorem.Weknowthatwecanfindn>2forwhich‚theequationholds.Fermatscribbledanoteonatextmarginindicatingthathehadfoundthesolutionforn=2.Unfortunately,theproofdiedwithhim.Becausethestatementisphrasedasaquestion‚ratherthanaclearlydefinedalgorithm,itlacksdefiniteness.
Problem1.bThisstatementviolatesnotonlytherulesofmathematics,butthecriterionofeffectiveness.Wecancomputeonlythosethingsthatarefeasible,anddivisionbyzeroismathematicallyundefined
Page17,Exercise3
#include#include#include
#defineTRUE1
#defineFALSE0
#defineMAX_STRING100voidtruth_table(int);
intmain(){intn;
printf("n:
(>=0):
");scanf("%d",&n);while(n<=0)
{/*errorloop*/printf("n:
");scanf("%d",&n);
}
truth_table(n);
voidtruth_table(intn)
{/*generateatruth_tablebytransforming#ofpermutationsintobinary*/
inti,j,div,rem;
charstring[MAX_STRING];for(i=0;i{/*numberofpermutationsorrowsinthetable*/strcpy(string,"\0");div=i;for(j=n;j>0;j--){/*numberofbitsneededforeachrow*/rem=div%2;div=div/2;if(!rem)strcat(string,"FALSE");elsestrcat(string,"TRUE ");}printf("%s\n",string);}}Page17,Exercise4#includeintmin(int,int);#defineTRUE1#defineFALSE0intmain(){intx,y,z;printf("x:");scanf("%d",&x);printf("y:");scanf("%d",&y);printf("z:");scanf("%d",&z);if(min(x,y)&&min(y,z)){/*xissmallest*/printf("%d",x);if(min(y,z))printf("%d%d\n",y,z);elseprintf("%d%d\n",z,y);}elseif(min(y,x)&&min(y,z)){/*yisthesmallest*/printf("%d",y);if(min(x,z))printf("%d%d\n",x,z);elseprintf("%d%d\n",z,x);}elseprintf("%d%d%d\n",z,y,x);}intmin(inta,intb){if(a}Page17,Exercise7#includedoubleiterFact(int);doublerecurFact(int);intmain(){intn;printf("n:(>=0):");scanf("%d",&n);while(n<0){/*errorloop*/printf("n:(>=0):");scanf("%d",&n);}printf("%dfactorialis%f.\n",n,iterFact(n));printf("%dfactorialis%f.\n",n,recurFact(n));}doublerecurFact(intn){/*recursiveversion*/if((n==0)||(n==1))return1.0;returnn*recurFact(n-1);}doubleiterFact(intn){/*findthefactorial,returnasadoubletokeepitfromoverflowing*/inti;doubleanswer;if((n==0)||(n==1))return1.0;answer=1.0;for(i=n;i>1;i--)answer*=i;returnanswer;}Page17,Exercise8#includeintiterFib(int);intrecurFib(int);intmain(){intn;printf("n:(>=0):");scanf("%d",&n);while(n<0){/*errorloop*/printf("n:(>=0):");scanf("%d",&n);}printf("%dFibonacciis%d.\n",n,iterFib(n));printf("%dFibonacciis%d.\n",n,recurFib(n));}intrecurFib(intn){/*recursiveversion*/if((n==0)||(n==1))return1;returnrecurFib(n-1)+recurFib(n-2);}intiterFib(intn){/*findthefactorial,returnasadoubletokeepitfromoverflowing*/inti;intfib,fib1,fib2;if((n==0)||(n==1))return1;fib1=fib2=1;for(i=2;i<=n;i++){fib=fib1+fib2;fib2=fib1;fib1=fib;}returnfib;}Page17,Exercise9#includedoublerecurBinom(int,int);doubleiterBinom(int,int);doublerecurFact(intn);intmain(){intn,m;printf("n:(>=0):");scanf("%d",&n);while(n<0){/*errorloop*/printf("n:(>=0):");scanf("%d",&n);}printf("m:(>=0):");scanf("%d",&m);while(m<0){/*errorloop*/printf("m:(>=0):");scanf("%d",&m);}printf("n:%dm:%dRecursiveBinomialcoefficientis%f.\n",n,m,recurBinom(n,m));printf("n:%dm:%dIterativeBinomialcoefficientis%f.\n",n,m,iterBinom(n,m));}doubleiterBinom(intn,intm){/*definedasn!/(m!-(n-m)!)*/inti;doublenFact,mFact,nMinusMFact;if(n==m)return1;if((n==0)||(n==1))nFact=1;else {nFact=1;for(i=n;i>1;i--)nFact*=i;}if ((m==0)||(m==1))mFact=1;else{mFact=1;for(i=m;i>1;i--)mFact*=i;}if(((n-m)==0)||((n-m)==1))nMinusMFact=1;else {nMinusMFact=1;for(i=n-m;i>1;i--)nMinusMFact*=i;}returnnFact/(mFact*nMinusMFact);}doublerecurFact(intn){/*recursiveversion*/if((n==0)||(n==1))return1.0;returnn*recurFact(n-1);}doublerecurBinom(intn,intm){/*recursiveversion*/returnrecurFact(n)/(recurFact(m)*recurFact(n-m));}Page17,Exercise11#include#defineTower11#defin
{/*numberofpermutationsorrowsinthetable*/strcpy(string,"\0");
div=i;
for(j=n;j>0;j--)
{/*numberofbitsneededforeachrow*/rem=div%2;
div=div/2;
if(!
rem)strcat(string,"FALSE");elsestrcat(string,"TRUE ");
printf("%s\n",string);
Page17,Exercise4
#include
intmin(int,int);#defineTRUE1
intmain()
{
intx,y,z;
printf("x:
");scanf("%d",&x);
printf("y:
");scanf("%d",&y);
printf("z:
");scanf("%d",&z);
if(min(x,y)&&min(y,z)){/*xissmallest*/printf("%d",x);
if(min(y,z))printf("%d%d\n",y,z);
elseprintf("%d%d\n",z,y);
elseif(min(y,x)&&min(y,z)){/*yisthesmallest*/printf("%d",y);
if(min(x,z))printf("%d%d\n",x,z);
elseprintf("%d%d\n",z,x);
else
printf("%d%d%d\n",z,y,x);
intmin(inta,intb){
if(a
Page17,Exercise7
doubleiterFact(int);doublerecurFact(int);
");
scanf("%d",&n);while(n<0)
{/*errorloop*/
printf("%dfactorialis%f.\n",n,iterFact(n));printf("%dfactorialis%f.\n",n,recurFact(n));
doublerecurFact(intn)
{/*recursiveversion*/
if((n==0)||(n==1))return1.0;returnn*recurFact(n-1);
doubleiterFact(intn)
{/*findthefactorial,returnasadoubletokeepitfromoverflowing*/
inti;
doubleanswer;
if((n==0)||(n==1))return1.0;answer=1.0;
for(i=n;i>1;i--)answer*=i;
returnanswer;
Page17,Exercise8
intiterFib(int);intrecurFib(int);
printf("%dFibonacciis%d.\n",n,iterFib(n));printf("%dFibonacciis%d.\n",n,recurFib(n));
intrecurFib(intn)
if((n==0)||(n==1))return1;returnrecurFib(n-1)+recurFib(n-2);
intiterFib(intn)
intfib,fib1,fib2;
if((n==0)||(n==1))return1;fib1=fib2=1;
for(i=2;i<=n;i++){fib=fib1+fib2;fib2=fib1;
fib1=fib;
returnfib;
Page17,Exercise9
doublerecurBinom(int,int);doubleiterBinom(int,int);doublerecurFact(intn);
intmain(){
intn,m;printf("n:
");scanf("%d",&n);while(n<0)
printf("m:
");scanf("%d",&m);while(m<0)
{/*errorloop*/printf("m:
");scanf("%d",&m);
%dm:
%dRecursiveBinomialcoefficientis%f.\n",n,m,recurBinom(n,m));printf("n:
%dIterativeBinomialcoefficientis%f.\n",n,m,iterBinom(n,m));
doubleiterBinom(intn,intm)
{/*definedasn!
/(m!
-(n-m)!
)*/inti;
doublenFact,mFact,nMinusMFact;if(n==m)return1;
if((n==0)||(n==1))nFact=1;else {
nFact=1;
for(i=n;i>1;i--)nFact*=i;
if ((m==0)||(m==1))mFact=1;else{
mFact=1;
for(i=m;i>1;i--)mFact*=i;
if(((n-m)==0)||((n-m)==1))nMinusMFact=1;else {
nMinusMFact=1;
for(i=n-m;i>1;i--)nMinusMFact*=i;
returnnFact/(mFact*nMinusMFact);
doublerecurBinom(intn,intm)
returnrecurFact(n)/(recurFact(m)*recurFact(n-m));
Page17,Exercise11
#defineTower11
#defin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1