第04讲 一元多式与线性表习题.docVIP

  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文档。上传文档
查看更多
第04讲 一元多式与线性表习题

数据结构第 次课 课 堂 提 问 在计算机中如何表示一个一元多项式Pn(x) = p0+ p1x+ p2x2+….+ pnxn?? 本 次 课 内 容 总 结 1. 一元多项式及相加的表示; 2. 一元多项式及相加的实现; 3. 本章知识要点回顾及内容精要; 思 考 题 作 业 题 1. 约瑟夫(Joseph)问题:编号为1,2,···,n的n个人按顺时针方向围坐在一张圆桌旁,每个人手中持有一个密码(正整数)。首先输入一个正整数作为报数上限值m,然后,从第一个人开始按顺时针方向自1开始顺序报数,报到m的人离开桌旁,并将他手中的密码作为新的m值,从顺时针方向的下一个就坐在桌旁的人人开始重新从1报数,如此下去,直至所有人全部离开桌旁为止。 2. 假设有7个人,编号从1到7,他们手中的密码分别是3,1,7,2,4,8,4,最初的m=2,通过报数,这7个人离开桌旁的顺序应该是:2,3,5,4,7,6,1。 参考 资料 《数据结构辅导与提高》,徐孝凯编著,清华大学出版社 《数据结构习题解答与考试指导》,梁作娟等编著,清华大学出版社 授 课 内 容 2.4 一元多项式的表示及相加 一、一元多项式的表示 在数学上,一元多项式Pn(x)可按升幂写成: Pn(x) = p0+ p1x+ p2x2+….+ pnxn? 它由n+1个系数唯一确定 ,因此,在计算机里,它可用一个线性表P来表示: P = (p0 ,p1 ,p2 ,… pn)????每一项的指数i隐含在其系数pi的序号里。 然而在通常的应用中,多项式的次数可能很高且变化很大,使得顺序存储结构的最大长度很难决定。 形如: S(x) = 1+3x10000+2x2000的多项式时,就要用一长度为20001的线性表来表示,表中仅有三个非零元素,这种对内存空间的浪费是应当避免的,但是如果只存储非零系数项则显然必须同时存储相应的指数。 一般情况下的一元n次多项式可写成: Pn(x) = p1xe1 + p2xe2 + … + pmxem 其中pi,是指数为ei的项的非零系数,且满足0 ≤ e1 e2 … em= n,若用一个长度为m且每个元素有两个数据项(系数项和指数项)的线性表便可唯一确定多项式Pn(x)。 ((p1 ,e1) , (p2 ,e2) , … ,(pm,em)) 二、一元多项式的实现 1. 抽象数据类型一元多项式的定义如下: ADT Polynomial{ 数据对象:D = {ai | ai ∈TermSet, i=1,2,…,m, m=0R1= {ai-1,a | ai-1, ai ∈ D,ai-1中的指数值 ai中的指数值,I=2,3,…,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 MultiplyPolyn(Pa,Pb) 初始条件:一元多项式Pa和Pb存在。 操作结果:完成多项式相乘运算,即Pa=Pa*Pb,并销毁Pb } ADT Polynomial 2. 用线性链表表示的多项式的加法运算的实现 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加,若其和不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。 按照上述抽象数据类型Polynomial中基本操作的定义,“和多项式”链表中的结点无需另外生成,而应该从两个多项式的链表中摘取。 例如,图中的两个线性链表分别表示一元多项式A(x)=7+3x+9x8+5x17和一元多项式B(x)=8x+22x7—9x8。从图中可见,每个结点表示多项式中的一项。 多项式的单链表存储结构 相加得到的和多项式 上述多项式的相加过程和上一节讨论的归并两个有序表的过程极其类似,不同之处仅在于,后者在比较数据元素时只出现两种情况。因此,多项式相加的过程亦完全可以利用线性链表的基本操作来完成。 Status LocateElem ( LinkList L,ElemType e,Pos

文档评论(0)

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

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

1亿VIP精品文档

相关文档