- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.5 线性表的其它存储方法 静态链表 相对于顺序表而言,静态链表有什么优点? 优点:在执行插入和删除操作时,只需修改游标,不需要移动表中的元素,从而改进了在顺序表中插入和删除操作需要移动大量元素的缺点。 缺点:没有解决连续存储分配带来的表长难以确定的问题;静态链表还需要维护一个空闲链;静态链表不能随机存取。 间接寻址 间接寻址:是将数组和指针结合起来的一种方法,它将数组中存储数据元素的单元改为存储指向该元素的指针 。 2.5 线性表的其它存储方法 0 1 2 i-1 n-1 Max-1 … … 空闲 长度 a1 ai an a2 插入操作移动的不是元素而是指向元素的指针。当元素占用的空间较多时,比顺序表的插入操作快得多。 2.6 线性表应用举例 多项式(Polynomial)的算术运算 一元多项式P(x)可以表示为 Pn(x) = p0 + p1x + p2x2 + … + pnxn n阶多项式Pn(x)有n+1项 系数 coef: p0, p1, p2, …, pn 指数 exp: 0, 1, 2, …, n, 按升幂排列 上述方式,仅仅适用于指数连续排列、 “0”系数较少的情况。但对于指数不全的多项式,如: P20000(x) = 3 + 5x50 + 14x20000 会造成系统空间的巨大浪费. 2.6 线性表应用举例 一般情况下,一元多项式可写成: Pn(x)=p1xe1+p2xe2+…+pmxem 其中:pi是指数为ei的项的非零系数, 0≤e1 ≤e2 ≤… ≤em ≤n 用一个线性表((p1,e1),(p2,e2), … ,(pm,em))就可以确定表示Pn(x)。例如多项式: P999(x) = 7x3 - 2x12 -8x999可以表示成: ((7,3),(-2,12),(-8,999))。 0 1 2 coef 7 -2 -8 … exp 3 12 999 … start finish maxsize 2.6 线性表应用举例 The ADT Polynomial 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=2,…n} 基本操作: CreatPolyn(P,m) //建立 DestroyPolyn(P) //销毁 PrintPolyn(P) //打印输出 PolynLength(P) //返回项数 AddPolyn(Pa,Pb) //相加 SubstractPloyn(Pa,Pb) //相减 MultiplyPolyn(Pa,Pb) //相乘 }ADT Polynomial 2.6 线性表应用举例 一元多项式的数组(array)表示 starta coef exp avail 0 1 2 3 4 5 6 7 8 9 3 14 finisha startb finishb 2 8 1 0 8 14 -3 10 10 8 11 14 -3 10 12 8 1 0 2.6 线性表应用举例 用单链表实现多项式 多项式结点结构 系数 指数 指针 coef exp next 17 7 8 7 17 8 5 22 11 7 ) ( ) ( ) ( 9 22 8 ) ( 5 9 3 7 ) ( x x x x B x A x C x x x x B x x x x A + + + = + = - + = + + + = -1 A 7 0 3 1 9 8 5 17 ^ -1 B 8 1 22 7 -9 8 ^ -1 C 7 0 11 1 22 7 5 17 ^ 2.6 线性表应用举例 运算规则 设p,q分别指向A,B中某一结点,p,q初值是第一结点 比较 p-exp与q-exp p-exp q-exp: p结点是和多项式中
文档评论(0)