(完整版)用单链表实现任意两个一元多项式的加减运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件综合设计报告书

二○一六年六月

一.需求分析:

1.设计题目:用单链表实现任意两个一元多项式的加减运算

2.设计要求:编程实现以下功能:

①分别输入一元多项式p n (x)和Q n (x)。

从键盘输入一元对项式中各项的系数和指数,并用单链表加以表示。

②分别对一元多项式p n (x)和Q n (x)进行升幂排序。

将一元多项式中各子项按照指数从小到大的顺序排序。

③分别输出一元多项式p n (x)和Q n (x)。

将用单链表表示的一元多项式输出,即打印多项式的系数和指数。

④任意输入一个实数x0,分别求出一元多项式p n (x0)和Q n (x0)的值。

⑤已知有两个一元多项式分别为P n (x)和Q n (x),求出两个多项式的和

R n (x)和差T n (x),分别用单链表表示R n (x)和T n (x),并将二者输出,

(R n (x)=P n (x)+Q n (x),T n (x)=P n (x)-Q n (x))

⑥保存多项式,即分别将一元多项式p n (x)和Q n (x)各项的系数和指数保

存到外部磁盘文件。

⑦由程序从所存文件中读出多项式的系数和指数,重新构建一元多项式

P n (x) 和Q n (x),并可对其再次进行运算操作。

3.系统功能需求分析:

①用单链表表示出一元多项式

②将多项式进行升幂排序

③输出多项式

④计算多项式在x0的值

⑤建立并输出多项式的和与差

⑥将多项式以及他的系数指数进行保存

⑦读取多项式

二.概要设计:包括系统总体设计框架和系统功能模块;

系统功能模块

(1)功能选择函数:通过输入对应功能的数字,进行多项式的运算。该函数在主函数中调用。

(2)输入数据函数:通过建立单链表,输入两个多项式的各项指数和系数。(3)升幂函数:通过冒泡排序法对两个多项式进行升幂排序。

(4)求和、求差函数:定义空链用来存储结果,将两个多项式相加减。(5)输出函数:输出上一步的运行结果。

三.详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;

设计思路:

(1)定义结构体struct

(2)建立单链表

(3)建立一元多项式

(4)显示一元多项式

(5)一元多项式的加法计算

(6)一元多项式的减法计算

功能选择函数:

数据输入函数:求和函数:

求差函数:

四.主要源程序代码:包括存储结构设计说明,以及完整源程序;存储结构设计说明:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减以及求值操作。

五.调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);测试:

1.出错现象:排序出现问题,不能正确升幂排序

解决方法:修改主函数,通过while循环以及switch选择调用函数

结果:输出是按照升幂排序输出的

2.出错现象:多项式加减的时候,计算结果不正确

解决方法:修改功能函数,先通过升幂排序,然后再进行一项一项的加减,同时对系数加减结果进行判断,注意如果等于0,释放p指针所指向的结点,不再输出0

结果:修改程序后,正常输出。

六.设计小结:

通过本次软件综合设计,我对链表的使用以及一元多项式的处理有了很大的进步。不管是对理论知识的理解还是对上级操作都得到了锻炼。本次设计过程中,记得刚刚编写好输入输出程序,调试的时候就有很多错误,通过一步一步的修改,终于成功运行。但把前五个设计要求达到的时候的成就感也特别难忘。唯一美中

不足的是,对于最后两个文件保存和调用,由于知识储备不充分,最后还是没有写出来,后面一定找时间自学自己填补好这一部分。

相关文档
最新文档