王帆 《用设计程序以实现任意两个高次多项式的加法和乘法运算》 第25页 共34页
2 当程序执行到合并指数相同项时就出现了错误。调试后发现执行完第一次while 循环后指向c 链表的指针e 不在存储空间中,导致无法判断while 循环,仔细检查后,发现合并时将e 指针所指结点释放后,没有给他指定新的结点。把指针e 后移一位,这样就解决了问题。
4.2 时间空间复杂度的计算
若多项式A 有n 项,多项式B 有m 项,则两多项式相乘时为m*n ,接下来检验是否有同类项检查方法是每一项都要对比所以为(m*n)!,时间复杂度为O(m*n+(m*n)!)由于各个算法是基于动态链表而建成的,所以各算法的空间性能均较好。
4.3 设计体会
这个题目不是很难,但是一开始自己却觉的非常的吃力,不知从那里入手,下面是我这次课程设计的一些感想:
(1)通过本设计实验又将数据结构中的链表的知识重新温习了一遍,并且自己能够独立设计一些东西,学会了在设计实验过程时的基本步骤。基本上能够有条理的解决这些问题。 (2)在课程设计中遇到了很多的问题,都是以前没有发现的,这些问题涉及的方面很多,有的是c 语言基础的,也有最近学习的数据结构的知识。通过本次课程设计,让我发现了自己的不足。自己在学习知识上面的漏洞。希望通过弥补这些发现的漏洞,提高自己的专业知识水平。
(3)设计过程中的解决问题的方法,让我明白了如何学习会更有效。如何学习才不会耽误太多的时间。也学会了解决问题的一般方法:向老师、同学请教,借助网络等等。 (4)实验过程中也走了很多的弯路,由于在开始设计的时候思路不是很清晰,对于一些问题不能很好的提出解决问题的方法,在设计过程中,代码总是重复的修改,在很多问题上,代码并不时最优的。相信在以后的学习中,随着知识的增多,问题会逐渐得到解决。
总之,我付出了许多时间,换来的是用任何东西都不能比的财富,别人抢不走,因为他是知识。因为自己知识有限所以程序不是很好,但它是我自己一步一步编写出来。只有好好学习,自己将来才有出路。
王帆 《用设计程序以实现任意两个高次多项式的加法和乘法运算》 第26页 共34页
5 测试结果及其分析
图5-1
图5-1 两多项式相乘后没有指数相同项输出的结果
图5-2 两多项式相乘后有指数相同项合并后输出的结果
图5-2
6 用户使用说明
王帆 《用设计程序以实现任意两个高次多项式的加法和乘法运算》 第27页 共34页
(1)给出任意两个高次多项式,只需按照多项式从左到右依次输入系数值、指数值,当输
入指数值为-1 时结束。(由于程序设计的缺陷系数指数都要输入所以结束之前系数值可随 便输入不影响运算结果。
(2)程序中指数、系数定义的是整型,所以表达式中系数值、指数值不能超出整型范围。 (3)输入是正数直接输入,负数要加负号。指数不能选择-1。
参考文献
[1]王昆仑,李红等编著. 数据结构与算法. 北京:中国铁道出版社,2007. [2]苏仕华等编著. 数据结构课程设计. 北京:机械工业出版社 ,2005. [3]苏仕华编著. 数据结构与算法解析. 合肥:中国科学技术大学出版社,2004. [4]郭嵩山等著. 国际大学生程序设计竞赛例题解. 北京:电子工业出版社,2008. [5]刘大有,唐海鹰等编著. 数据结构. 北京:高等教育出版社,2001. [6]徐孝凯编著.数据结构实用教程. 北京: 清华大学出版社,1999.
[7]严蔚敏,陈文博编著. 数据结构及算法教程. 北京: 清华大学出版社,2001. [8]刘振安,刘燕君等编著. C 程序设计课程设计. 北京: 机械出版社,2004. [9]胡学钢. 数据结构与算法设计指导. 北京: 清华大学出版社, 1999.
附录:程序源代码 // 程序名称:GCDXS.CPP
王帆 《用设计程序以实现任意两个高次多项式的加法和乘法运算》 第28页 共34页
// 程序功能:实现任意两个高次多项式的加法和乘法运算 // 程序作者:王帆
/* 多项式加法和乘法示例 */ ?? #include ?? #include
using namespace std; ???? //定义多项式的项类 ?? class term { ?? public: ??
int coef; //多项式系数 ?? int exp; //多项式指数 ??
//初始化项的系数和指数 ?? term( int c=0,int e=0):coef(c),exp(e){ } ?? }; ????
//定义多项式类 ?? class PolyArith { private: ??l
ist
list
list
list
list
while(iter_first != poly_list_first.end()&&\\ ??

