用广义表实现一元多项式的乘法
- 格式:doc
- 大小:603.50 KB
- 文档页数:26
《用广义表实现一元多项式乘法》 第 - 1 - 页 共 26 页
用广义表实现一元多项式乘法
学生姓名:XXX 指导教师:XXX 摘 要 本课程设计主要解决在数学领域的一元多项式运算中,对一元多项式进行处理的算法。其中包括了一些较为简单的运算,如两个一元多项式的加法、减法和乘法。在课程设计中,系统开发平台为WindowsXP,程序设计设计语言采用C语言,程序运行平台为VC。在程序设计中,利用广义表中的线性链表,采用了定义一种新的数据结构和分装函数两种解决问题的方法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在数学领域的一元多项式中解决实际问题。
关键词 线性链表 ;新的数据结构;一元多项式 《用广义表实现一元多项式乘法》 第 - 2 - 页 共 26 页 1 引 言 .................................................. - 3 -
1.1 课题背景及意义 ....................................... - 3 - 1.2 课题实现技术的简要说明 ............................... - 3 - 1.3 可行性分析 ........................................... - 4 - 2 系统需求分析 ........................................... - 5 - 2.1功能需求分析 .......................................... - 5 - 2.2 性能需求分析 ......................................... - 4 - 2.3系统总体结构设计 ........................ 错误!未定义书签。 2.4系统管理流程图 .......................... 错误!未定义书签。 3 用广义表对一元多项式处理的系统设计 ...................... - 5 - 3.1 系统功能模块分析 ................................................ 错误!未定义书签。 4 详细设计 .................................................................................................. - 9 - 4.1 数据结构的设计 .................................................... 错误!未定义书签。 4.2用户使用目录界面 ............................................................................... - 9 - 4.3一元多项式的输入和输出功能模块 ................................................... - 9 - 4.4一元多项式的加法处理模块 ............................. - 10 - 4.5一元多项式的减法处理模块 ............................. - 11 - 4.6一元多项式的乘法处理模块 ............................................................. - 12 - 5 结束语 ................................................. - 14 - 6 参考文献 ............................................... - 15 - 附录: ................................................... - 16 - 源程序代码: ............................................ - 16 - 《用广义表实现一元多项式乘法》 第 - 3 - 页 共 26 页 1 引 言 1.1 课题背景及意义 “数据结构”是计算机程序设计的重要理论技术基础,学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相关的算法。它不仅是计算机学科的核心课程,而且已成为其他理科专业的热门选修课。 在“数据结构”这门课程中,有部分内容对一元多项式的运算进行了探讨。而符号多项式的操作,已经成为表处理的典型用例。 在通常的应用中,多项式的次数可能很高且变化很大,使得顺序存储结构的最大长度难以确定。特别是在处理形如S(x)=5+2x30000+8x40000的多项式时,就要用一长度为40001的线性表来表示,表中仅有3个非零元素,这种对内存空间的浪费是应当避免的。一般情况下的一元n次多项式可写Pn(x)=p1xe1+p2xe2+„+pmxem。若用一个长度为m且每个元素有两个数据项(系数项和指数项)的线性表便可惟一确定多项式Pn(x)。在最坏情况下,n+1(=m)个系数都不为零,则比只存储每项系数的方案要多存储一倍的数据。但是,对于S(x)类的多项式,这种表示将大大节省空间。
1.2 课题实现技术的简要说明 根据数学定义,不含加法或减法运算的整式称为单项式。多个单项式的代数和称为多项式。多项式中每一个单项式称为多项式的项。 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。 多项式的相加过程和归并两个有序表的过程极其相似,不同之处在于,后者在比较数据元素时只出现两种情况。因此,多项式相加的过程也完全可以利用线性链表的基本操作来完成。 需要说明的是,表示一元多项式的线性链表应该是有序链表。有序链表的基本操作定义与线性链表是不同的。 《用广义表实现一元多项式乘法》 第 - 4 - 页 共 26 页 1.3 可行性分析
(1)发展可行性分析 在强调时间就是金钱的现代社会中,效率变的越来越重要。而将数学领域中的一元多项式的运算与计算机程序设计相结合,则是当今社会现代数学的发展趋势。通过这样的处理方式,从事专业性科学计算、财会等各部门员工就能从大量烦琐的数字计算中解脱出来,只需对自己需要的数据和内容进行必要的处理,而不用对每个环节都了如指掌。这在一定程度上能够节省人力物力,为计算机数学的发展提供了可行性。 (2)技术可行性分析 技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。一元多项式处理的工作主要是在计算机和数学之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非常适合计算机特点,通过网络Internet技术,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,数学学科精密的逻辑为本身系统的建设和数学的课持续发展提供了技术条件。 (3)社会可行性分析 社会可行性有时也称为操作可行性,主要论证新系统在教育或机构开发和运行的可能性以及运行后可能一起的对教育或机构的影响,即组织内外是否具备接受和使用新系统的条件。在当前信息技术飞速发展的大环境下,计算机技术和软件技术和数学学科的融会贯通是中小型学校完全有可能也有能力采用这样先进的管理技术。它对学校带来的影响可以看到:对传统计算理念的冲击,可能引起低级计算层的变动和人员的调整。对从事科学计算工作人员的要求提高,在一定的可能下进行机构精简,迫使从事科学计算工作人员继续学习新知识,拓宽很多领域在市场环境下的生存空间。 1.4 性能需求分析 1.硬件环境 处理器:Inter COREi3 M 330。 内存:2GB。 硬盘空间: 320GB。 2.软件环境 操作系统: WindowsXP 开发平台:VC 《用广义表实现一元多项式乘法》 第 - 5 - 页 共 26 页 2 数据结构与设计思路 2.1数据结构设计 本系统定义了一种抽象数据类型Polynomial,用来存储一元多项式的项的信息。其代码为: typedef struct Polynomial //定义多项式的项 { float coef; //系数 int exp; //指数 struct Polynomial *next;//指针 }*PolyList; //定义多项式链表 多项式链表结构如图2-1所示。
图2-1 多项式链表结构图 2.2功能分析 用广义表对一元多项式处理的系统的实现与设计需要完成四个功能,其中包括: (1)一元多项式的输出; (2)求两个一元多项式的加法运算的结果; (3)求两个一元多项式的减法运算的结果; (4)求两个一元多项式的乘法运算的结果 主模块负责应用程序的主界面,由它调用其他模块.因此主模块应该具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功能。根据功能需求的结果分析,主界面应该由一元多项式的输入与输出、两个一元多项式的加法运算与结果的输出、两个一元多项式的减法运算与结果的输出和两个一元多项式的乘法运算与结果的输出组成,如图3-2所示。可以通过输入不同选项进入相应的功能模块。 系统功能模块如图2-2所示。
系数coef 指数exp 系数coef 指数exp 系数coef 指数exp
系数coef 指数exp ^