(完整版)用单链表实现任意两个一元多项式的加减运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
结果:修改程序后,正常输出。
六.设计小结:
通过本次软件综合设计,我对链表的使用以及一元多项式的处理有了很大的进步。不管是对理论知识的理解还是对上级操作都得到了锻炼。本次设计过程中,记得刚刚编写好输入输出程序,调试的时候就有很多错误,通过一步一步的修改,终于成功运行。但把前五个设计要求达到的时候的成就感也特别难忘。唯一美中
不足的是,对于最后两个文件保存和调用,由于知识储备不充分,最后还是没有写出来,后面一定找时间自学自己填补好这一部分。