《数据结构作业系统_第一章答案(5页).doc》由会员分享,可在线阅读,更多相关《数据结构作业系统_第一章答案(5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-1.16 试写一算法,如果三个整数X,Y和Z的值不是依次非递增的,则通过交换,令其为非递增。要求实现下列函数:void Descend(int &x, int &y, int &z); /* 按从大到小顺序返回x,y和z的值 */void Descend(int &x, int &y, int &z)/* 按从大到小顺序返回x,y和z的值 */ if(xy)int t=x;x=y;y=t; if(xz)int t=x;x=z;z=t; if(yz)int t=y;y=z;z=t;1.17 已知k阶裴波那契序列的定义为 f0=0, f1=0, ., fk-2=0, fk-1=1; fn=fn-
2、1+fn-2+.+fn-k, n=k,k+1,.试编写求k阶裴波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。要求实现下列函数:Status Fibonacci(int k, int m, int &f);/* 如果能求得k阶斐波那契序列的第m项的值f,则返回OK;*/* 否则(比如,参数k和m不合理)返回ERROR */Status Fibonacci(int k, int m, int &f) /* 求k阶斐波那契序列的第m项的值f */ int tmpk=k; int tmpm=0; int curPos=k; int *tmpResults; if(k2 |
3、m0)return ERROR; if(m=0)f=0;return OK; if(mk-1)f=0;return OK; if(m=k-1)f=1;return OK; /初始化表 tmpResults=(int *)malloc(k*sizeof(int); while(tmpmk-1) *(tmpResults+tmpm)=0; tmpm+; /while *(tmpResults+tmpm)=1; tmpm=k; /初始化结束 do tmpk=k; f=0; while(tmpk-) f+=*(tmpResults+tmpk); if(f*(tmpResults+tmpk)return
4、 ERROR; if(curPos=k)curPos=1; else curPos+; *(tmpResults+curPos-1)=f; while(tmpm+ARRSIZE或对某个k(1kn)使k!2kMAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。要求实现下列函数:Status Series(int ARRSIZE, int a);/* 求i!*2i序列的值并依次存入长度为ARRSIZE的数组a; */* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */Status Series(int ARRSIZE, int a) /* 求i!*2i序列的值并
5、依次存入长度为ARRSIZE的数组a; */* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */ int i=1,j; int n1=1,n2=2; while(i1) n1*=j; n2*=2; j-; if(n1*n2)MAXINT) return OVERFLOW; ai-1=n1*n2; i+; if(iARRSIZE+1) return OVERFLOW; else return OK; 1.20 试编写算法求一元多项式 P(x) = a0 + a1x + a2x2 + . + anxn的值P(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。要求实现下列函数:float Polynomial(int n, int a, float x0);/* 求一元多项式的值P(x0)。 */* 数组a的元素ai为i次项的系数,i=0,1,.,n */float Polynomial(int n, int a, float x)/* 求一元多项式的值P(x)。 */* 数组a的元素ai为i次项的系数,i=0,.,n */ int i=0,j; float xx=0,num; while(i=1) num*=x; j-; xx+=ai*num; i+; return xx;-第 5 页-