一元稀疏多项式计算器(大数据结构).doc

一元稀疏多项式计算器(大数据结构).doc

ID:55896743

大小:117.00 KB

页数:16页

时间:2020-06-13

一元稀疏多项式计算器(大数据结构).doc_第1页
一元稀疏多项式计算器(大数据结构).doc_第2页
一元稀疏多项式计算器(大数据结构).doc_第3页
一元稀疏多项式计算器(大数据结构).doc_第4页
一元稀疏多项式计算器(大数据结构).doc_第5页
资源描述:

《一元稀疏多项式计算器(大数据结构).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、院系:计算机科学学院专业:软件工程年级:2013级课程名称:数据结构姓名:韦宜(201321092034)指导教师:宋2015年12月15日题目:设计一个一元稀疏多项式简单计算器班级:软件工程1301:韦宜学号:201321092034完成日期:12月15日一、需求分析问题描述:设计一个一元多项式加法器基本要求:输入并建立多项式;(2)两个多项式相加;(3)输出多项式:n,c1,e1,c2,e2,…,en,其中,n是多项式项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列。(4)计算多项式在x处的值;(5)求多项式的导函数。软件环境:Windows,UNIX,Linux等不同平台

2、下的VisualC++6.0硬件环境:512MB存,80Gb硬盘,Pentium4CPU,CRT显示器。概要分析本程序有五个函数:PolyNode*Input()(输入函数);PolyNode*Deri(PolyNode*head)(求导函数);PolyNode*Plus(PolyNode*A,PolyNode*B)(求和函数);voidOutput(PolyNode*head)(输出函数);intmain()(主函数)本程序可使用带有附加头结点的单链表来实现多项式的链表表示,每个链表结点表示多项式的一项,命名为node,它包括两个数据成员:系数coef和指数exp,他们都是公共数据成员,

3、*next为指针域,用链表来表示多项式。适用于不定的多项式,特别是对于项数再运算过程中动态增长的多项式,不存在存储溢出的问题。其次,对于某些零系数项,在执行加法运算后不再是零系数项,这就需要在结果多项式中增添新的项;对于某些非零系数项,在执行加法运算后可能是零系数项,这就需要在结果多项式中删去这些项,利用链表操作,可以简单的修改结点的指针以完成这种插入和删除运算(不像在顺序方式中那样,可能移动大量数据项)运行效率高。详细设计(1)主函数:intmain(){PolyNode*head_a,*head_b;intchoice;head_a=newPolyNode;head_a->next=N

4、ULL;do{system("cls");//清屏函数Output(head_a);cout<<"______________________________";cout<<"

5、---------1.输入公式-----------

6、";cout<<"

7、---------2.求导-----------

8、";cout<<"

9、---------3.两式求和-----------

10、";cout<<"

11、---------4.退出程序-----------

12、";cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";cin>>choice;if(choic

13、e==1)head_a=Input();elseif(choice==2)head_a=Deri(head_a);//求导elseif(choice==3){head_b=Input();head_a=Plus(head_a,head_b);}//求和elseif(choice==4)break;elsecout<<"输入错误,重新输入:";}while(choice!=5);return0;(2)由于此程序是二人合作完成,我在此程序中主要是完成求和和求导函数的设计。所以下面着重介绍下求和函数和求导函数。PolyNode*Deri(PolyNode*head)(求导函数):流程图如下:

14、NNYstart建立以head1为头指针的空链表,A指向后一接点建立以head2为头指针的空链表,p=head2q=B的第一个接点返回指针head1调用求和函数head1=head1+head2A指向后一接点q指向的接点与A指向的接点相乘,结果保存到head2后面,q指向后一接点A!=NULLq!=NULLYENDPolyNode*Mul(PolyNode*A,PolyNode*B)求导函数部分代码:PolyNode*Deri(PolyNode*head)//求导{PolyNode*p=head;while(p->next!=NULL){if(p->next->exp==0)p->next

15、=NULL;//指数为零返回else{p->next->coef*=p->next->exp;//系数乘以指数p->next->exp--;//指数减一p=p->next;}}returnhead;用于对输入的多项式进行求导,求导在链表进行计算,即运算完成链表的值改变,返回头指针。PolyNode*Plus(PolyNode*A,PolyNode*B)(求和函数):流程图如下:startNYNYNYYNNYNYNY建立链

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

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

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