数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx

上传人:p** 文档编号:674124 上传时间:2024-01-08 格式:DOCX 页数:12 大小:45.37KB
下载 相关 举报
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第1页
第1页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第2页
第2页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第3页
第3页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第4页
第4页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第5页
第5页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第6页
第6页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第7页
第7页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第8页
第8页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第9页
第9页 / 共12页
数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx_第10页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx》由会员分享,可在线阅读,更多相关《数据结构与算法课程设计说明书--一元多项式的加法.减法的实现.docx(12页珍藏版)》请在第壹文秘上搜索。

1、数据结构与算法课程设计说明书设计题目:一元多项式的加法.减法的实现1需求分析功能:首先建立一个有序链表,输入一个多项式,进行降幕排列。接着判断进行加减乘哪种运算,再输入一个多项式进行运算.2概要设计a.建立多项式链表输入m项的系数和指数,建立表示一元多项式的有序链表P。依次输入m个非零项,生成结点并插入链表.再在界面上输入n个非零项的系数和指数structterm*CreatPolyn(structterm*P,intm)/输入m项的系数和指数,建立表示一元多项式的有序链表Pinti;structterm*h-P=(structterm*)malIoc(sizeof(structterm),*

2、q;if(mcoef=0.0;Printf(依次输入%d个非零项n”,m);for(i=1;icoef,ftP-expn);if(P-coef)q=P;P=P-next=(structterm*)malIoc(sizeof(structterm);q-next=NULL:free(P);returnh;/CreatPolynb.多项式加法利用两个多项式的结点构成“和多项式,Pa=Pa+Pb.structterm*APolyn(structterm*Pa,structterm*Pb)/多项式加法:Pa=Pa+Pb,利用两个多项式的结点构成和多项式structterm*h,*qa=Pa,*qb=P

3、b,*p,*q;floatsum;h=p=(structterm*)malIoc(sizeof(structterm);p-next=NULL;while(qa&qb)(/Pa和Pb均非空switch(Compare(qa,qb)(case-1:/多项式PA中当前结点的指数值小p-next=qb;P=qb;qb=qb-next;break;caseO:/两者的指数值相等sum=qa-coef+qb-coef;if(sum!=O.O)(修改多项式PA中当前结点的系数值p-next=qa;qa-coef=sum;P=qa;qa=qa-next;)else(删除多项式PA中当前结点q=qa;qa=q

4、a-next;free(q);)q=qb;qb=qb-next;free(q);break;case1:/多项式PB中当前结点的指数值小p-next=qa;P=qa;qa=qa-next;break;)/switch/whileif(Pa)p-next=qa;/链接Pa中剩余结点if(Pb)p-next=qb;/链接Pb中剩余结点q=h;h=h-next;free(q);returnh;/APolync.多项式减法Pa=Pa-Pb,利用两个多项式的结点构成差多项式。structterm*BPolyn(structterm*Pa,structterm*Pb)/多项式减法:Pa=Pa-Pb,利用两

5、个多项式的结点构成差多项式。structterm*p=Pb;while(p)p-coef*=-1;p=p-next;)returnAPolyn(Pa,Pb);/BPolynd.多项式乘法多项式乘法:Pa=Pa*Pb,利用两个多项式的结点构成积多项式“。tructterm*CPolyn(structterm*Pa,structterm*Pb)/多项式乘法:Pa=Pa*Pb,利用两个多项式的结点构成积多项式。structterm*pa=Pa,*p,*q,*r,*s,*t;r=p=(structterm*)malloc(sizeof(structterm);if(!Pb)returnNULL;whi

6、le(pa)(p-coef=pa-coef;p-expn=pa-expn;q=P;p=p-next=(structterm*)malIoc(sizeof(structterm);pa=pa-next;)q-next=NULL;free(p);pa=Pa;t=s=(structterm*)malloc(sizeof(structterm);while(pa)s=s-next=(structterm*)malIoc(sizeof(structterm);pa=pa-next;)q-next=NULL;free(s);pa=Pa;while(pa)(pa-coef*=Pb-coef;pa-expn+

7、=Pb-expn;pa=pa-next;)Pb=Pb-next;While(Pb)(P=r;s=t;while(p)(s-coef=p-coef*Pb-coef;s-expn=p-expn+Pb-expn;p=p-next;s=s-next;)Pa=APolyn(Pa,t);Pb=Pb-next;)returnPa;/CPolyne.主函数建立主函数界面,实现加、减、乘主要功能。界面运算由输入第一个一元多项式开始,逐步实现多项式计算。voidmain()(structterm*M,*N;chars2;inti,n;puts元多项式计算:n输入一一元多项式的项数”);scanf(%d,&n);M

8、=CreatPolyn(M,n);M=selsort(M);PrintfPoly(M);p:PUtS(nl:加n2:减n3:乘n4:退出“);getchar();q:gets(s);if(sl=0,II!isdigit(*s)(PUtS(输入有误,请重新输入!”);gotoq;)i=*s-48;switch(i)case1:M=A(M,N);gotop;case2:M=B(M,N);gotop;case3:M=C(M,N);gotop;case4:break;default:PUtS(输入有误,请重新输入!);gotoq;)3详细设计ttincludeincludetypedef struct

9、 项的表示, float coef; int expn;struct term term;ttincludeterm多项式的项作为LinkList的数据元素系数指数*next;structterm*CreatPolyn(structterm*P,intm)输入m项的系数和指数,建立表示一元多项式的有序链表Pinti;structterm*h=P=(structterm*)malIoc(sizeof(structterm),*q;if(mcoef=0.O;Printf(依次输入%d个非零项n”,m);for(i=1;icoef,Pexpn);if(P-coef)q=P;P=P-next=(str

10、uctterm*)malIoc(sizeof(structterm);)q-next=NULL;free(P);returnh;)/CreatPolynstructterm*selsort(structterm*h)(structterm*g,*p,*q;floatf;inti,fini=1;if(Jh)returnNULL;for(g=h;g-next&fini;g=g-next)(fini=O;for(p=h,q=h-next;q;p=p-next,q=q-next)if(p-expnexpn)(f=p-coef;i=p-expn;p-coef=q-coef;p-expn=q-expn;q

11、-coef=f;q-expn=i;fini=1;)for(g=h,p=g-next;p;)if(g-expn=p-expn)(g-coef+=p-coef;g-next=p-next;q=P;p=p-next;free(q);)elseif(g-next)(g=g-next;p=p-next;)returnh;)PrintfPoly(structterm*P)(structterm*q=P;if(!q)putchar(,0,);return;)if(q-coef!=1)(Printf(%g”,q-coef);if(q-expn=l)putchar(X);elseif(q-expn)Printf

12、(X%d”,q-expn);)elseif(!q-expn)putchar(,1,);elseif(q-expn=l)putchar(,X,);elsePrintf(“c%d”,q-expn);q=q-next;while(q)(if(q-coef0)putchar(,+,);if(q-coef!=1)printf(%g”,q-coef);if(q-cxpn=l)putchar(X,);elseif(q-expn)Printf(X%d,q-expn);)elseif(!q-expn)putchar(11);elseif(q-expn=l)putchar(,X,);elsePrintf(“c%d

13、”,q-expn);q=q-next;)Compare(structterm*a,structterm*b)(if(a-expnexpn)returnT;if(a-expnb-expn)return1;return0;)structterm*APolyn(structterm*Pa,structterm*Pb)/多项式加法:Pa=Pa+Pb,利用两个多项式的结点构成和多项式:structterm*h,*qa=Pa,*qb=Pb,*p,*q;floatsum;h=p=(structterm*)malIoc(sizeof(structterm);p-next=NULL;while(qa&qb)Pa和Pb均非空switch(Compare(qa,qb)case-1:/多项式PA中当前结点的指数值小p-next=qb;P=qb;qb=qb-next;break;caseO:/两者的指数值相等sum=qa-coef+qb-coef;if(sum!=0.0)(修改多项式PA中当前结点的系数值p-next=qa;qa-coef=sum;P=q

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

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!