第2章线性表A-3(2012-3-4).ppt

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

* 应用举例 (1)一元多项式的数学通式? (2)用抽象数据类型如何描述它的定义? (3)用C语言如何描述它的定义? (4)如何编程实现两个一元多项式相加? 求两个一元多项式的和 (参见教材P39 – 43) 讨论: * 实验:链表的应用-求两个一元多项式之和 [问题描述] 求两个一元多项式之和。假设要求用户按幂从大到小次序输入各结点,并且没有两个结点具有相同的幂,这样一个一元多项式的链表是按幂expn从大到小顺序排列的,将这两个有序单链表按expn值相加得到一个新的有序单链表。 [基本要求] 用单链表存储一元多项式,将两个存储一元多项式的单链表相加产生结果单链表。 [测试数据] 第一个一元多项式为:3x^3+2x^2-5x+6 第二个一元多项式为:2x^3-2x^2+5x+4 * (1) 一元多项式的数学通式 一元多项式的通式可表示为:   一元多项式在计算机内存储时,既可用顺序表存储,又可用链表存储。 顺序表 链表 am-1 em-1 … a0 e0 ^ * (2)一元多项式的抽象数据类型定义 (参见P40) ADT Polynomial{ 数据对象:D={ai|ai∈TermSet,i=1,2,…,m, m≥0 TermSet中的每个元素包含一个表示系数的实数和表示指数的整数} 数据关系:R1={ ai-1,ai| ai-1, ai ∈D, 且ai-1中的指数值ai中的指数值, i=1,2,…,n} 基本操作: CreatPolyn(P,m) 操作结果:输入m项的系数和指数,建立一元多项式P。/建表 * DestroyPolyn(P) 初始条件:一元多项式P已存在。 操作结果:销毁一元多项式P。 /释放表 PrintPolyn(P) 初始条件:一元多项式P已存在。 操作结果:打印输出一元多项式P。 /输出表 PolynLength(P) 初始条件:一元多项式P已存在。 操作结果:返回一元多项式P中的项数。/求表长 * AddPolyn(Pa,Pb) 初始条件:一元多项式Pa和Pb已存在。 操作结果:完成多项式相加运算,即:Pa=Pa+Pb, 并销毁一元多项式Pb。 /两表相加 SubtractPolyn(Pa,Pb) 初始条件:一元多项式Pa和Pb已存在。 操作结果:完成多项式相减运算,即:Pa=Pa-Pb, 并销毁一元多项式Pb。 /两表相减 }ADT Polynomial MultiplyPolyn(Pa,Pb) 初始条件:一元多项式Pa和Pb已存在。 操作结果:完成多项式相乘运算,即:Pa=Pa×Pb, 并销毁一元多项式Pb。 /两表相乘 * (3) 用C语言具体描述其定义 typedef struct polynode *pnode; struct polynode{ int coef; /*系数*/ int expn; /*幂*/ struct polynode *next; };       coef expn next * (4) 编程实现两个一元多项式相加 3 14 2 8 1 0 a ^ 8 14 -3 10 10 6 b ^ 例: 运算规则:两多项式中指数相同的项对应系数相加,若和不为0,则构成多项式c(=a+b)中的一项;a和b中所有指数不相同的项均应复制到c中。 * 实现过程: 依次比较Pa和Pb所指结点中的指数项,可分为 Pa-expn = Pb-expn 和 Pa-expn !=Pb-expn两种情况.若Pa-expn = Pb-expn,则将Pa和Pb所指结点中系数域的数值相加(并判其和是否为0),否则将Pa和Pb所指结点中较高指数项的结点插入到新表c中。 3 14 2 8 1 0 ^ a Pa 8 14 -3 10 10 6 ^ b Pb 11 14 -3 10 2 8 1 0 ^ c Pc 10 6 + * #include stdio.h #include malloc.h typedef struct polynode *pnode; struct polynode{ int coef; /*系数*/ int expn; /*幂*/ struct polynode *next; }; 具体编程(用C语言) * pnode createpoly() /*根据用

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档