一元稀疏多项式计算器doc_第1页
一元稀疏多项式计算器doc_第2页
一元稀疏多项式计算器doc_第3页
一元稀疏多项式计算器doc_第4页
一元稀疏多项式计算器doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 课程名称数据结构课程设计课题名称一元稀疏多项式计算器目录一、课题的主要功能二、课题的功能模块的划分三、主要功能的实现四、程序调试五、总结(程序设计心得与体会)11六、附件(所有程序的原代码)12七、评分表、课程题目一元稀疏多项式计算器、需求分析1、一元稀疏多项式简单计算器的功能是:1.输1入并建立多项式;输出多项式,输出形式为整数序列:,其中是多项式的项数,和分别是第项的系数和指数,序列按指数降序排列;多项式和相加,建立多项式:多项式和相减,建立多项式:计算多项式在处的值。、设计思路:输.1定义线性表的动态分配顺序存储结构;建立多项式存储结构,定义指针输.利3用链表实现队列的构造。每次输入一

2、项的系数和指数,可以输出构造的一元多项式输.演4示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上显示。多项式显示的格式为:、设计思路分析要解决多项式相加,必须要有多项式,所以必须首先建立两个多项式,在这里采用链表的方式存储链表,所以我将结点结构体定义为序数指数指针域运用尾插法建立两条单链表,以单链表和分别表示两个一元多项式和,的求和运算等同于单链表的插入问题(将单链表中的结点插入到单链表中),因此“和多项式”中的结点无须另生成。为了实现

3、处理,设、分别指向单链表和的当前项,比较、结点的指数项,由此得到下列运算规则:若,则结点所指的结点应是“和多项式”中的一项,令指针、后移。若,则将两个结点中的系数相加,当和不为时修改结点的系数。若,则结点所指的结点应是“和多项式”中的一项,将结点插入在结点之前,且令指针在原来的链表上后移。内容包括:函数CreatePolyn建立一个头指针为head、项数为m的一元多项式,然后调运函数Insert向生成链表中保存多项式项数及每项的指数、系数。函数CreatePolyn生成多项式a和多项式b。通过函数compare和函数PrintPolyn对多项式a和多项式b指数、系数进行分析。当多项式a指数指数

4、大于多项式b指数时,链表保存多项式a系数;当多项式b指数指数大于多项式a指数时,链表保存多项式b系数;当多项式b指数指数等于多项式a指数时,对多项式a和多项式b系数进行加减运算,之后将系数保存在链表中。函数PolynAddPolyn对多项式和多项式进行加运算,调运函数compare、函数PrintPolyn、函数CreatePolyn。函数SubtractPolyn对多项式a和多项式b进行减运算,其对多项式b中各系数正负取反,然后调用函数PolynAddPolyn进行a+(-b)。主函数运行分别输入多项式和多项式的项数、系数和指数,然后选择对多项式操作A:a+b或B:a-b,从而实现对多项式的

5、加减运算。函数的调用关系图:宴顶zA后宴顶zA后PolynADDPalPolyn,1paPolynph)建立姿项式cCreatePolynSt出客项式whiIefurintffE主函数papbpc、元素类型、结点类型和指针类型:系数指数2建立一个头指针为、项数为的一元多项式建立新结点以接收数据调用函数插入结点请输入第项的系数与指数、主函数和其他函数:主要函数的流程图:输入值,计算并返回多项式的值flag=l根痢I唱的多项式退出多5式想温城出多项式多受式柜加测试数据a.(2a5a83.1x11)(75a811x9)(B.h1111x92a7);清输入第二十多项式continue(印.8x151.

6、2x9x12x?c.(1xx2x3x4x5)(i3X4)(X5X2X1);CiVDocuienrtsandSetiinesYkOO1DeliutLeseI1隔好二i哆蹴2ki最勘蟆乍两、一元多孤位.际H元多时欢技&前之和布卜,9Pressanjjkeytoc&ntiiu.BcC:Docuentsan!SettingskODI5.ese*情郁集T哆项小i1L2L3网.第二个多项大.利一元氯对物司一元吞外胸g项式之前湖,,1.瓦3,1.0,2,1,8,1,Pressanykeytocontinue经过次的理解循环队列中对边界与。生。生经仿4活就这样;虽然这只是一次极其简单的课程设计;可是平心而论,

7、也耗费我不少的心血。这让我不得不对我们社会的付出的老一辈;为了我们的生活更美好,他们为我们付出多少心血。我感觉用心细心地做好一件事情的重要性,在这次课程设计中,体会到了做设计的严谨,更加加深了我对课程设计的兴趣,我觉得我们不仅是在完成一个课题,更是对自我知识的探索以及团队合作的重要性,在此次课程设计过程中,遇到不懂的问题我会及时向老师,同学请教,以更好地完成该项课题设计。一个人的能力有限;此次的程序设计能够成功,是我自身的努力和寻求老师同学的帮助共同努力作用的结果。在这一段努力学习的过程中,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编

8、写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。以后,努力学习好这么课程,让自己拥有更多的知识,才能解决更多的问题。用带表头结点的单链表存储多项式。#include#includetypedefstructnodefloatcoef;intexpn;structnode*next;Lnode,*polynmial;voidcreate(polynmial&L);输入并建立多项式Lvoiddisplay(polynmialL);/显示,输出多项式Lvoidsort(polynmial&L);多项式L按指数排序voidr

9、everse(polynmial&L);/逆置voidselect();/用户选择加减操作voidadd(polynmialLa,polynmialLb,polynmial&Lc);多项式La,Lb相力口voidsubtract(polynmialLa,polynmialLb,polynmial&Ld);/多项式La减去Lb,结果给Ldvoidcreate(polynmial&L)/输入并建立多项式Linti,n;staticstructnode*p;scanf(%d,&n);L=(structnode*)malloc(sizeof(structnode);L-next=NULL;for(i=

10、0;icoef,&p-expn);p-next=L-next;L-next=p;voiddisplay(polynmialL)/显示,输出多项式Lstructnode*p,*q;intflag=0;intk=0;q=L-next;while(q)if(q-coef!=0)k+;q=q-next;printf(%d,k);p=L-next;if(p-coef!=0)printf(%.1f,%d,p-coef,p-expn);flag+;for(p=p-next;p;p=p-next)if(p-coef!=0)printf(%.1f,%d,p-coef,p-expn);flag+;if(flag=

11、0)printf(%dn,flag);elseprintf(n);voidsort(polynmial&L)多项式L按指数排序polynmialp,q,r,u;p=L-next;L-next=NULL;while(p!=NULL)r=L;q=L-next;while(q!=NULL)&(q-expnexpn)r=q;q=q-next;u=p-next;r-next=p;p-next=q;p=u;voidreverse(polynmial&L)/逆置polynmialH;staticstructnode*p,*q,*s;H=(structnode*)malloc(sizeof(structnod

12、e);H-next=NULL;p=(structnode*)malloc(sizeof(structnode);s=L-next;p-coef=s-coef;p-expn=s-expn;p-next=s-next;while(s)p-coef=s-coef;p-expn=s-expn;p-next=s-next;q=H-next;H-next=p;p-next=q;p=(structnode*)malloc(sizeof(structnode);s=s-next;p=H-next;q=L-next;while(p)q-coef=p-coef;q-expn=p-expn;q=q-next;p=p

13、-next;voidselect()/用户选择加减操作printf(请选择加减操作n);printf(1.两个一元多项式相加n);printf(2.两个一元多项式相减n);voidadd(polynmialLa,polynmialLb,polynmial&Lc)/多项式La,Lb相力口structnode*pa,*pb;staticstructnode*pc;Lc=(structnode*)malloc(sizeof(structnode);pa=La-next;pb=Lb-next;Lc-next=NULL;while(pa&pb)pc=(structnode*)malloc(sizeof(

14、structnode);if(pa-expnexpn)pc-next=Lc-next;Lc-next=pc;pc-coef=pa-coef;pc-expn=pa-expn;pa=pa-next;elseif(pa-expn=pb-expn)pc-next=Lc-next;Lc-next=pc;pc-expn=pa-expn;pc-coef=pa-coef+pb-coef;pa=pa-next;pb=pb-next;elsepc-next=Lc-next;Lc-next=pc;pc-coef=pb-coef;pc-expn=pb-expn;pb=pb-next;while(pa)pc=(stru

15、ctnode*)malloc(sizeof(structnode);pc-next=Lc-next;Lc-next=pc;pc-coef=pa-coef;pc-expn=pa-expn;pa=pa-next;while(pb)pc=(structnode*)malloc(sizeof(structnode);pc-next=Lc-next;Lc-next=pc;pc-coef=pb-coef;pc-expn=pb-expn;pb=pb-next;voidsubtract(polynmialLa,polynmialLb,polynmial&Ld)/多项式La减去Lb,结果给Ldstructnod

16、e*pa,*pb;staticstructnode*pd;Ld=(structnode*)malloc(sizeof(structnode);pa=La-next;pb=Lb-next;Ld-next=NULL;while(pa&pb)pd=(structnode*)malloc(sizeof(structnode);if(pa-expnexpn)pd-next=Ld-next;Ld-next=pd;pd-coef=pa-coef;pd-expn=pa-expn;pa=pa-next;)elseif(pa-expn=pb-expn)(pd-next=Ld-next;Ld-next=pd;pd-

17、expn=pa-expn;pd-coef=pa-coef-pb-coef;pa=pa-next;pb=pb-next;)else(pd-next=Ld-next;Ld-next=pd;pd-coef=pb-coef;pd-expn=pb-expn;pb=pb-next;)while(pa)(pd=(structnode*)malloc(sizeof(structnode);pd-next=Ld-next;Ld-next=pd;pd-coef=pa-coef;pd-expn=pa-expn;pa=pa-next;)while(pb)(pd=(structnode*)malloc(sizeof(structnode);pd-next=Ld-next;Ld-next=pd;pd-coef=-pb-coef;pd-expn=pb-expn;pb=pb-next;)intmain()intsign;polynmialLa,Lb,Lc,Ld;printf(请输入第一个多项式:n);create(La);sort(La);printf(请输入第二个多项式:n);create(Lb);sort(Lb);select();scanf(%d,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论