- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
试题3(1999级试题5).doc
试题3(1999年5)
C代n)
[程序]
本程序
?
[程序]
#include stdio.h#include malloc.htypedef struct elem{int index;double coef;struct elem *next}POLYNODE;void write(POLYNODE *g){ POLYNODE *p=g;while(p){ printf(%8.4f,p-coef);if(p-index) printf(*^%d,p-index);if(p-next p-next-coef0) printf(+);p = p-next;}printf(\n\n);}main(){ POLYNODE *f,*g,*s,*inpoly(),*polymul();f=inpoly();g=inpoly();s=polymul(f,g);write();}POLYNODE *reverse(POLYNODE *g){ POLYNODE *u=NULL,*v=g,*w;while(v){ w=v-next;v-next=u;u=v;v=w;}return u;}POLYNODE *polymul(POLYNODE *f, POLYNODE *g){ POLYNODE *fp,*gp,*tail,*p=NULL,*q;int i,maxindex; double temp;maxindex = f-index+g-index; g=reverse(g);for(i=maxindex;i=0;i--){fp=f;gp=s;while(fp!=NULL fp-indexi) fp = fp-next;while(gp!=NULL gp-indexi-fp-index) gp = gp-next;temp = 0.0;while(fp gp)if(fp-index + gp-index ==i){temp +=fp-coef*gp-coef; fp=fp-next; gp=gp-next;else if( (1) ) fp=fp-next;else gp=gp-next;if(temp!=0.0){q=( POLYNODE*)malloc(sizeof(POLYNODE));q-index=i; q-coef=temp; q-next=NULL;if( (2) ) p=q;else (3) ;tail =q;}}g=reverse(g); return p;}POLYNODE *inpoly(){ POLYNODE *u,*v,*h=NULL,*p;int index; double coef;printf(Input index(0 for finish)); scanf(%d,index);while(index =0){printf(input coef); scanf(%lf,coef);p=( POLYNODE*)malloc(sizeof(POLYNODE));p-index=index; p-coef = coef;v=h;while(v!=NULL indexv-index) { nu=v;v=v-next;}if(v==NULL || index v-index){p-next=v; if(v==h) (4) ;else (5) ;}else v-coef +=coef;printf(Input index( 0 for finish)); scanf(%d,index);}return h;}
[解析]
这道试题看起来很麻烦,其实不然,程序中科学地使用3函inpoly()完成polymul()完成
先看函inpoly(),它在returnu;完成回送返回值的操作,所以要特h的操作。
一直到p-coef;是完成一v=h,因v=NULL,所以v是否NULL的判v和h的
接下indexv-index这个循环条件的含义,就不难确定这是在v= =NULL的v= =NULL又代表什么?v= =NULL有1、第一次2、在
有了以上的理解,不难确定,以下if-else体中indexv-index的含而v-coef +=coef则是完成在指数相等时的系数相加。仔细研究if-else体中的if部分,不
先考p-next = v;使p-next置空。填空(4)5)的v=h;和其后的循4)中要h,否while循4)的h=p。
基于上述的分析,不5)p-next =v;,u-next=p就可以完成任
现在回到函数polymul。首先,程序取reverse()将链表g反g的各reverse
文档评论(0)