多项式相加10.9.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多项式相加10.9.ppt

* 第2章 线 性 表 多项式相加问题(Polynomial) 符号多项式的相加操作是线性表处理的典型用例。在数学上的一个多项式可按降幂写成: 我们称P为n项多项式,aixi是多项式的项(0≤i≤n),其中ai为系数,x为变量,i为指数, P由n+1个系数唯一确定。因此,在计算机里,它可用一个线性表p=( , , , , ) 每一项的指数i隐含在其系数 的序号里。 思考: 假设Q是一个m次多项式,同样可用线性表Q来表示: 不失一般性,设mn,则两个多项式相加的结果R=P+Q,可用线性表R表示: 显然,我们可以采用顺序线性存储,进而解决相加问题。然而,在通常的应用中,多项式的次数可能很高且变化很大,使用顺序存储结构的最大长度很难确定。比如: 的多项式时,就要用一个长度为20001的线性表来表示,而表中仅有3个非零元素,造成内存空间的浪费,但是如果只存储非零系数项则显然必须同时存储相应的指数。 一般情况下的一元n次多项式可写成 其中, 是指数为 的项的非零系数,且满足 若用一个长度为m且每个元素有两个数据项(系数项和指数项)的线性表 便可惟一确定多项式P。在最坏的情况下,n+1(=m)个系数都不为零,则只多存储一倍的数据。但,对于S类的多项式则大大节省了空间。 这里,我们主要讨论如何采用线性链表的基本操作来实现多项式的相加。 设有两个已知多项式: 将两个多项式相加得一个新的多项式C: 图 多项式 多项式相加的链表存储结构 多项式用链表来表示其结点结构如下: typedef struct poly   { int coef ; /*变量的系数*/ int exp ; /*变量的指数*/ struct poly *next; /*指到下一结点的指针*/ } Lpoly; 2.5.2 多项式相加的算法实现 假设合并后的链表头指针为pc。为了进行加法运算,设置p,q两个指针变量分别指向pa,pb两个链表的第一个数据元素结点。然后对p,q两个结点的指数域进行比较。指数相同的结点系数相加,连入pc链表;指数不同的,将指数较大的结点连入pc表。现设pc链表头指针指向pa(这样可充分利用现有结点,节省资源),设指针变量r也指向pa,当有结点连入pc表时pc指针始终不动,r向前移动。每处理一次,相关指针p,q,r一般需要向前移动。 对照后面算法2.11和图2.17可看出p,q两个结点的指数均为14,这两个结点的系数相加后得一个系数为11的新项,连入pc 链。如图2.18所示。当p,q指针向前(表尾方向)移动一个位置之后,将p,q所指两个结点的指数相比较,由于q结点的指数较大,于是将q结点连入pc链,这时p不移动,q,r指针各向前移动一步,此时链表状态由图2.18转变为图2.19。 * 第2章 线 性 表

文档评论(0)

zhoubingchina + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档