多项式相乘C实现

多项式相乘C实现

ID:39981909

大小:109.63 KB

页数:12页

时间:2019-07-16

多项式相乘C实现_第1页
多项式相乘C实现_第2页
多项式相乘C实现_第3页
多项式相乘C实现_第4页
多项式相乘C实现_第5页
资源描述:

《多项式相乘C实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、西安郵電大学数据结构设计报告题目:多项式相乘院系名称:计算机学院专业名称:软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间:一.设计目的以动态单链表为存储结构,使用排序等操作实现多项式的乘法运算二.设计内容用一个单链表来表示一个一元多项式;在创建多项式的过程中,可以按指数的任意顺序输入,并且可在同一多项式中输入指数相同的多个项;在进行乘法操作之前,输出参与操作的两个多项式。要求输出的多项式按指数升序排列,同指数的多项合并,项数的正负号显示合理。对已排序且合并了同指数项的两个多项式实现乘法操作,并输出结果;结果多项

2、式要求以动态链表为存储结构,复用原多项式的结点空间;输出结果多项式要求按指数升序排列,同指数的多项要合并,项数的正负号要求显示合理。三.概要设计主函数main()1.功能模块图;创建多项式LB=creat()创建多项式LA=creat()调用Polysort()排序调用print()输出LB调用Polysort()排序调用print()输出LA对多项式LA,LB相乘LC=Polymul(LA,LB)调用Polysort()排序调用print()输出LC2.各个模块详细的功能描述。多项式链表升序排序函数PolylistPoly

3、sort(Polylisthead)根据幂次的高低排序的同时并合同类项,幂次相同的系数相加存入前项,释放合并项中后者空间,若系数相加和为0则释放两项空间。多项式创建函数Polylistcreat()多项式相乘函数PolylistPolymul(PolylistLA,PolylistLB)输出函数voidprint(Polylisthead)分三种情况:系数输出、符号输出、指数输出四.详细设计1.各功能函数的数据流程图Polysort()开始head==NULL?first=p->next;p->next=NULL;move=

4、first;Yp->exp==move->expp->exp==move->expNNyp->coef+=move->coef;free(move);p->next==NULLyhead->next=move;move->next=p;p->coef==0yhead->next=move;move->next=p;q=p;p=p->next;q->next=p->next;free(p);yWhile(1)p=head->next;q=head;move=first;returnhead结束2.重点设计及编码(1)多项式链表

5、升序排序函数PolylistPolysort(Polylisthead){Polynode*first,*move,*p,*q;//first移动指针move被移动项指针p,q临时指针q=head;p=head->next;if(p==NULL)returnhead;//判断链表是否为空;first=p->next;p->next=NULL;move=first;while(move!=NULL)//直接插入排序(链表排序){first=first->next;if(p->exp==move->exp)//判断待插入项指数是

6、否与首项相等;{p->coef+=move->coef;//系数相加;free(move);//释放空间;if(p->coef==0)//若系数相加和为0;{q->next=p->next;free(p);//释放空间;}}elseif(p->exp>move->exp)//判断待插入项指数是否大于第一个项的指数;{head->next=move;move->next=p;}elseif(p->next==NULL)//判断下一项是否为空;{p->next=move;move->next=NULL;}else//待插入项指数

7、插入位置在首末项之间;{q=p;//移动临时变量指针p,qp=p->next;while(1){if(p->exp==move->exp)//判断待插入项指数是否与首项相等;{p->coef+=move->coef;//系数相加;free(move);//释放空间;if(p->coef==0){q->next=p->next;//若系数相加和为0;free(p);//释放空间;}break;}if(p->exp>move->exp)//判断待插入项指数是否大于当前项的指数;{q->next=move;move->next=p

8、;break;}if(p->next==NULL)//判断下一项是否为空;{p->next=move;move->next=NULL;break;}q=p;//移动临时变量指针p,q;p=p->next;}}p=head->next;//使p,q指针重新指到初始化位置;q=head;mov

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。