[工学]数 据 结 构 课 程 设 计--2- 副本

[工学]数 据 结 构 课 程 设 计--2- 副本

ID:33159678

大小:330.00 KB

页数:31页

时间:2019-02-21

[工学]数 据 结 构 课 程 设 计--2- 副本_第1页
[工学]数 据 结 构 课 程 设 计--2- 副本_第2页
[工学]数 据 结 构 课 程 设 计--2- 副本_第3页
[工学]数 据 结 构 课 程 设 计--2- 副本_第4页
[工学]数 据 结 构 课 程 设 计--2- 副本_第5页
资源描述:

《[工学]数 据 结 构 课 程 设 计--2- 副本》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第一章需求分析1.1功能描述两个一元多项式加法与乘法的实现,顾名思义,本程序的主要功能就是对两个一元多项式进行代数上的加法与乘法运算。从程序的名称上看,似乎程序的源代码并不难写,其实事实也正如此。但是,如果要求程序本身不仅好用而且能够让广大读者能够理解程序的内在含义,做到这一点的确不容易,因此本人将尽力向大家对该程序的功能作出详细解析。功能一:两个一元多项式的加法。在数学上两个一元多项式的加法实现很简单,即将两个多项式相加后再进行整理合并即可,然而如果要想用程序实现此操作,就没那么简单了。但是,由于此操作在数学上可实现,因此可将同样的思想运用在编程上,理论上也应该可以实现

2、,事实也正是如此。在两个多项式相加过程中,程序是这样处理的:先将两个多项式中的所有项都开辟空间将其存储起来,然后在新生成的多项式上进行整理合并操作,最后即得出相加后的最简结果,关于其具体过程读者可以参考后面第二章中的模块说明部分,那里给出了详尽说明。功能二:两个一元多项式的乘法。同前面一元多项式的加法相比较,显然一元多项式的乘法实现相对来说比较复杂,这体现在两个方面:一是要将每个多项式中的所有项都与另一个多项式中的所有项两两之间都要进行相乘,此过程工作量相当大;二是要将相乘以后的所有项都开辟空间将其存储起来,得到一个新的多项式,然后在此多项式上再进行整理合并操作,得到相乘

3、以后的最简结果。关于其具体过程读者可以参考后面第二章中的模块说明部分,那里给出了详尽说明。由于上述两点,乘法部分的程序模块理解起来比加法部分的程序模块理解起来也更加吃力。下面给出本论文的课程设计的题目:*动态双链循环链表结构下的一元多项式的加法、乘法的实现: 设有一元多项式Am(x)和Bn(x). Am(x)=A0+A1x1+A2x2+A3x3+…+Amxm Bn(x)=B0+B1x1+B2x2+B3x3+…+Bnxn 请实现求Am(x)+Bn(x)和Am(x)×Bn(x) 要求:1)采用动态存储结构实现;2)要求输出结果中无重复阶项和无零系数项;3)要求输出结果的升幂和

4、降幂两种排列情况311.2未来描述本程序目前只能实现两个一元多项式的加法与乘法运算,但程序的未来却不仅仅于此。由于程序中均采用双链循环链表作为多项式的存储结构,调用函数处理链表时都是从其头结点开始,故当要求实现多个多项式的加法与乘法运算时,只需对程序作稍微修改,即可实现此功能,关于其具体说明读者可以参考后面第五章节的内容,那里给出了详尽的描述。此外,程序的功能还可以继续扩展,只要添加合适的模块与程序连接即可实现,比如说添加实现两个多项式减法与除法的模块即可实现减法与除法运算,一旦模块添加成功也就意味着可以实现多个多项式的减法与除法运算。基于上述几点,程序的最终功能是可以实

5、现任意多个多项式的加减乘除混合运算,因此程序的未来还是很有发展空间的。此外,本程序还可以添加一个很有用的函数模块,即查找运算。程序的空间复杂度和时间复杂度也可以进一步提高。另外,本程序对运算结果的输出只有三种方式,但是不同的用户对运算结果的输出要求也不尽相同,对此程序只要多连接几个函数模块即可实现。关于程序未来的详细描述,读者可以参考后面第五章的内容,那里给出了详尽的描述。31第二章系统设计2.1多项式双链循环链表的生成函数程序在对多项式进行处理之前,首先要将多项式以合适的形式存储起来,以便于程序基于其存储形式对其进行数学运算的操作。本程序中对多项式的存储采用的均是双链循

6、环链表,而表中的结点均是结构体型的数据,多项式中的每一项都要用一个结点来存储,其中包括四个数据:项的系数coef,项中x的指数exp,指向下一项的指针next,指向前一项的指针prior。因此,首先要生成能存储多项式的双链循环链表,现将其生成函数算法给出如下:typedefstructpnode{floatcoef;intexp;structpnode*next;structpnode*prior;}polynode;polynode*creatlist()//多项式的双链循环链表的生成函数{polynode*p,*q,*head;head=p=malloc(sizeof

7、(polynode));printf("");printf("请输入头结点数据:");scanf("%f%d",&p->coef,&p->exp);printf("输入其他结点数据:");while((p->coef!=100)&&(p->exp!=100))//当向多项式链表结点中中输入100、100时,则完成多项式的建立{q=p;p=malloc(sizeof(polynode));scanf("%f%d",&p->coef,&p->exp);q->next=p;p->prior=q;}p->prior->next=h

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

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

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