Chapter线性表基本概念顺序表.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文档。上传文档
查看更多
Chapter线性表基本概念顺序表

-操作2-取元素(程序3-3) templateclass T bool LinearListT::Find(int k, T x) const { // 将第k个元素取至x中 if (k 1 || k length) return false; x = element[k-1]; return true; } 时间复杂度:Θ(1) -操作3-查找(程序3-3) templateclass T int LinearListT::Search(const T x) const { // 返回值为x的元素下标。【注意】此处有效下标为[1, n] for (int i = 0; i length; i++) if (element[i] == x) return ++i; return 0; } 时间复杂度:Θ(length) (a1,…,ak-1,ak, ak+1…,an) (a1,…,ak-1,ak+1,…,an) 1 a1 2 a2 … … k ak k+1 ak+1 … … length an … … MaxSize 1 a1 2 a2 … … k ak+1 k+1 ak+2 … … length-1 an … … MaxSize 删除前 删除后 -操作4:删除 删除算法(程序3-4) templateclass T LinearListT LinearListT::Delete(int k, T x) { if (Find(k, x)) { for (int i = k; i length; i++) element[i-1] = element[i]; //元素前移 length--; return *this; } else { throw OutOfBounds( ); //越界异常 return *this; } } 时间复杂度:O (length-k) Θ(1) Θ(length-k) LinearList X; X.Delete(3,a).Delete(4,b); 同时组合多个表的操作时可行的。 -删除算法分析 删除算法的时间代价主要耗费在移动数据元素上,移动数据元素的个数取决于删除元素的位置。 最好情形:删除表尾元素,不需要移动其它元素(移动个数为0); 最坏情形:删除序号为1的元素,需要将表中其他的元素全部向前移(移动个数为n-1); 删除时,数据平均移动次数AMN: 可供删除的位置有n个; 假设删除第i个元素的概率为Pi,删除第i个元素,数据移动的次数为(n-i)个; 不失一般性,等概率 Pi=1/n (a1,…,ak,ak+1,…,an) (a1,…,ak,x,ak+1,…,an) 1 a1 2 a2 … … k ak k+1 ak+1 … … length an … … MaxSize 1 a1 2 a2 … … k ak k+1 x k+2 ak+1 … … length an-1 length+1 an … MaxSize 插入x 插入前 插入后 -操作5:插入 插入算法(程序3-5) templateclass T LinearListT LinearListT::Insert(int k, const T x) { if (k 0 || k length) throw OutOfBounds( ); //越界异常 if (length == MaxSize) throw NoMem( ); //空间异常 for (int i = length-1; i = k; i--) element[i+1] = element[i]; //元素后移 element[k] = x; length++; return *this; } 时间复杂度:O (length-k ) -插入算法分析 插入算法的时间代价主要耗费在移动数据元素上,移动数据元素的个数取决于插入元素的位置。 最好情形:在表尾追加一个新元素,不需要移动其它元素(移动个数为0);

文档评论(0)

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

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

1亿VIP精品文档

相关文档