- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一元多项式的运算
数据结构课程设计 实 验 报 告 专业班级: 学 号: 姓 名: 2011年1月1日 题目:一元多项式的运算 题目描述 一元多项式的运算在此题中实现加、减法的运算,而多项式的减法可以通过加法来实现(只需在减法运算时系数前加负号)。 在数学上,一个一元n次多项式Pn(X)可按降序写成: Pn(X)= PnX^n+ P(n-1)X^(n-1)+......+ P1X+P0 它由n+1个系数惟一确定,因此,在计算机里它可以用一个线性表P来表示: P=(Pn,P(n-1),......,P1,P0) 每一项的指数i隐含在其系数Pi的序号里。 假设Qm(X)是一元m次多项式,同样可以用一个线性表Q来表示: Q=(qm,q(m-1),.....,q1,q0) 不是一般性,假设吗吗mn,则两个多想是相加的结果: Rn(X)= Pn(X)+ Qm(X) 很显然,可以对P,Q和R采用顺序存储结构,使得多项式相加的算法定义和实现简单化。然而,在通常的应用中,多项式的次数可能变化很大而且很高,使得顺序存储结构的最大长度很难确定。特别是在处理项数少且次数特别高的情况下,对内存空间的浪费是相当大的。因此,一般情况下,都采用链式存储结构来处理多项式的运算,使得两个线性链表分别表示一元多项式Pn(X)和Qm(X),每个结点表示多项式中的一项。 通过分析多项式的特征,不难看出多项式是由单项式构成的,而每个单项式都具有系数和指数,当系数为0时,该项就是去了意义,在计算机内要表示一个多项式,至少具有以下数据信息:系数信息、指数信息和指向下一个单项式的指针。通过指针,我们就可以把多个单项式连接起来,形成一个多项式。 2、任务要求 系数定义的是float型,范围是3.4*10^-38~3.4*10^38;指数定义的是int型,范围是-2147483648~+2147483647;输入多项式系数及指数,系统会自动将系数转化为浮点型。 功能: (1).提示输入数据。要求先输入多项式的项数。 (2).创建多项式。接收输入的数据,并保存到链表中。 (3).显示已经创建好的多项式。 (4).实现加、减法运算。 (5).退出程序 3、概要设计 (1)链表结点的类型定义 (2)建立有序链表void CreatPolyn(LinkList L,int n) (3)多项式链表的相加void AddPolyn(LinkList La,LinkList Lb,LinkList Lc) (4)多项式链表的输出void printList(LinkList L) 4、详细设计 (1)链表结点的类型定义 typedef struct //在struct前使用关键字typedef,表示是声明新类型 { float coef; //系数 int expn; //指数 }DataType; //DataType是新类型 typedef struct node //单链表的存储 { DataType data; //数据域 struct node *next; //指向下一个结点 }ListNode,*LinkList; //ListNode是结点的新类型,LinkList是指向ListNode类型的结点的指针类型 (2)建立有序链表 要实现多项式的加法运算,首先要建立多项式的存储结构,每一个一元多项式的存储结构就是一个有序单链表。有序链表的基本操作定义与线性链表有两处不同,一个是结点的查找定位操作LocateNode有所不同,二是结点的插入操作InsertNode不同,这两个操作算法分别如下: //结点的查找定位 int LocateNode(LinkList L,DataType e,int q) { ListNode *p=L-next; q=0;//记录结点位置序号 while(pe.expnp-data.expn) { p=p-next; q++; } if(p==NULL||e.expn!=p-data.expn) return 0; else return 1; } void InsertNode(LinkList L,DataType e,int q)函数功能:将新的节点p插入到现有链表的后面,并确保多项式的指数expn是升序。将s节点插入到e所指向的链表。在该函数的操作中,要注意指针是如何移动的。 //有序链表结点的插入 void InsertNode(LinkList L,DataType e,int q) { ListNode *s,*p; int i=0; p=L; while(p-next iq) { p=p-next; i++; }
您可能关注的文档
最近下载
- 人教版(新插图)五年级上册数学全册教学课件.pptx
- 《机械制图与CAD绘图》课件——剖视图.pptx VIP
- TEAC V-970X_R-919X三磁头卡座维修手册.pdf
- 03S402 室内管道支架及吊架.docx VIP
- 体例格式6:工学一体化课程《windows服务器基础配置与局域网组建》任务7学习任务分析表.docx VIP
- 【初中生物】光合作用第一课时 2024--2025学年北师大版生物七年级上册(2024版).pptx VIP
- 高标准农田高效节水灌溉工程建设项目建议书.pdf VIP
- 统编版(2024新版)七年级上册历史必背知识点提纲详细版 .pdf VIP
- SL 228-2013 混凝土面板堆石坝设计规范.pdf VIP
- 个人简历表格下载word(必威体育精装版).pdf VIP
有哪些信誉好的足球投注网站
文档评论(0)