网站大量收购独家精品文档,联系QQ:2885784924

实验报告示例实验一一元多项式相加.doc

实验报告示例实验一一元多项式相加.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告示例实验一一元多项式相加

实验一 一元多项式相加(实验报告示例) 需求分析 本演示程序中,多项式的系数限定为整数,多项式的长度由用户预先输入,利用链表实现队列的构造。每次输入一项的系数和指数,可以输出构造的一元多项式。 演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上显示。多项式显示的格式为:c1x^e1+c2x^e2+…+cnx^en 程序执行的步骤包括:1)输入多项式的项数及系数,建立多项式;2)实现多项式的相加;3)输出相加结果 测试数据: (1)(2x+5x^8-3x^11)+(7-5x^8+11x^9) (2)(3-x+4^x2-2x^9)+(-6^x+5x^2+7x^15) (3)(x+x2+x3)+0 (4)(x+x^3)+(3-x) 概要设计 为了实现上述程序功能,根据一元多项式的特点,可以构造链式存储的线性表存放一元多项式各式的信息。 主要思想:根据多项式的结构特点,利用线性链表来实现多项式相加,结点中存放各项的系数和指数,在默认用户按升幂次序输入多项式的各项后,构造相应的多项式。从头扫描两个多项式,用两个指针分别指示两个多项式的当前项,根据多项式相加的规则,对于指数相同的项,将其对应系数相加,若和不为零,则构成“和多项式”中的一项;对于两个多项式中指数不同的项,可直接复制到和多项式中,并按从小到大的升幂排列 本程序包含四个模块 主函数 void main(){ 初始化; 建立两个链表A和B; 输出建立的链表; A与B的相加,并输出 } 建立多项式函数createpoly()——根据用户输入的项数,提示用户输入系数和指数,建立链式存储的一元多项式 输出多项式函数outpoly()——根据日常的阅读习惯将多项式按格式输出 多项式相加函数addpoly()——按照多项式相加的法则实现两个多项式的相加 各模块之间的调用关系及接口如下: 详细设计 元素类型、结点类型和指针类型: typedef int ElemType; typedef struct mulpoly{ ElemType coef; ElemType exp; struct mulpoly * next; }; 2、主函数和其他函数清单 struct mulpoly * createpoly(int n) //根据用户输入的项数n,提示用户输入n组系数和指数,并构建链式线性表存储多项式信息 {} void outpoly(struct mulpoly * head)// 将以head为头指针的链表按多项式的格式输出 {} struct mulpoly * addpoly(struct mulpoly * ha,struct mulpoly *hb)// 将以ha,hb为头指针的两个链式按多项式相加的法则进行合并,放在hc中,并将hc返回 void main() {} 调试分析 1、在建立链表和多项式相加时,新生成链表的头指针做为参数传递时,曾忽略了参数的标识“”,致使建立链表失败。后来为了减少参数传递的个数,将新生成链表的头指针做为函数结果返回。今后应重视参数的变量和赋值属性的区别和标识。 2、本程序的模块划分比较合理,对指针的操作封装在子函数中,致使集合模块的调试比较顺利。但在子函数addpoly中,由于当前尾指针r赋了错误的初值,致使溢出,以后在编程和调试中都要进一步注意。 2、算法设计欠周全,对于输入数据的合法性没有检查;在输入多项式项的过程中,默认用户按升幂次序输入多项式各项,造成使用不方便和健壮性较差,所以应进一步修改多项式的建立操作,将新输入的项与已建成的链表部分进行比较,根据幂次的大小插入到正确的位置。 3、算法的时空分析 1)有序表采用带头结点的有序单链表,并增设尾指针,各种算法的时间复杂度比较合理,插入多项式结点的时间复杂度为O(1),多项式相加的时间复杂度为O(m+n)。 2)算法另设结点存放多项式的和,空间复杂度为O(m+n)。 4、空间复杂度较大,因此可以改进算法, 在原来的链表上摘取结点,这样可以减少或无需另外结点生成。 五、用户手册 1、进入演示程序后显示的操作界面为: 2、键入回车后,程序输出多项式建立的结果和求和的结果 六、测试结果 七、附录 源程序文件名清单: mulpoly.c/

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档