数据结构课程设计报告一元多项式的计算.doc

数据结构课程设计报告一元多项式的计算.doc

ID:61499688

大小:77.00 KB

页数:11页

时间:2021-02-07

数据结构课程设计报告一元多项式的计算.doc_第1页
数据结构课程设计报告一元多项式的计算.doc_第2页
数据结构课程设计报告一元多项式的计算.doc_第3页
数据结构课程设计报告一元多项式的计算.doc_第4页
数据结构课程设计报告一元多项式的计算.doc_第5页
资源描述:

《数据结构课程设计报告一元多项式的计算.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一元多项式的计算一、需求分析建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式的加减运算并输出结果二、概要设计存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。基本算法:1、输入输出(1)功能:将要进行运算的多项式

2、输入输出。(2)数据流入:要输入的多项式的系数与指数。(3)数据流出:合并同类项后的多项式。(4)程序流程图:多项式输入流程图如图1所示。(5)测试要点:输入的多项式是否正确,若输入错误则重新输入图表1开始申请结点空间+++++++++++++++++++++++++++++++++++++++++++++++++++++++num输入多项式的项数指针数组temp[i]中(i=1~num)输入多项式各项的系数x,指数y输出已输入的多项式合并同类项结束否是是否输入正确2、多项式的加法(1)功能:将两多项式相加。(2)数据流

3、入:输入函数。(3)数据流出:多项式相加后的结果。(4)程序流程图:多项式的加法流程图如图2所示。(5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。图表2开始定义存储结果的空链r是否输出存储多项式的和的链r结束是否同指数项系数相加后存入r中直接把p中各项存入r中直接把q中各项存入r存储多项式2的空链Q是否为空存储多项式1的空链P是否为空合并同类项3、多项式的减法(1)功能:将两多项式相减。(2)数据流入:调用输入函数。(3)数据流出:多项式相减后的结果。(4)程序流程图:多项式的减法流程图如图3所示。(

4、5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。图表3开始定义存储结果的空链r是否输出存储多项式的和的链r结束是否同指数项系数相加后存入r中把p中各项系数改变符号后存入r中直接把q中各项存入r存储多项式2的空链Q是否为空存储多项式1的空链P是否为空合并同类项一、详细设计#include#includetypedefstructPolynomial{floatcoef;intexpn;structPolynomial*next;}*Polyn,Polynomial;/

5、/Polyn为结点指针类型voidInsert(Polynp,Polynh){if(p->coef==0)free(p);//系数为0的话释放结点else{Polynq1,q2;q1=h;q2=h->next;while(q2&&p->expnexpn){//查找插入位置q1=q2;q2=q2->next;}if(q2&&p->expn==q2->expn){//将指数相同相合并q2->coef+=p->coef;free(p);if(!q2->coef){//系数为0的话释放结点q1->next=q2->nex

6、t;free(q2);}}else{//指数为新时将结点插入p->next=q2;q1->next=p;}}}//InsertPolynCreatePolyn(Polynhead,intm){//建立一个头指针为head、项数为m的一元多项式inti;Polynp;p=head=(Polyn)malloc(sizeof(structPolynomial));head->next=NULL;for(i=0;i

7、收数据printf("请输入第%d项的系数与指数:",i+1);scanf("%f%d",&p->coef,&p->expn);Insert(p,head);//调用Insert函数插入结点}returnhead;}//CreatePolynvoidDestroyPolyn(Polynp){//销毁多项式pPolynq1,q2;q1=p->next;q2=q1->next;while(q1->next){free(q1);q1=q2;//指针后移q2=q2->next;}}voidPrintPolyn(PolynP){Po

8、lynq=P->next;intflag=1;//项数计数器if(!q){//若多项式为空,输出0putchar('0');printf("");return;}while(q){if(q->coef>0&&flag!=1)putchar('+');//系数大于0且不是第一项if(q->coef!=

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

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

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