顺序表查找导入方案.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 查找 查找表 查找表: 是由同一类型的数据元素(或记录)构成的集合 对查找表经常进行的操作: (1)、查询某个“特定的”数据元素是否在查找表中; (2)、检索某个“特定的”数据元素的各种属性; (3)、在查找表中插入一个数据元素; (4)、从查找表中删除一个数据元素; 查找 根据给定的某个值,在查找表中确定一个其关键字等于给定值得数据元素(或记录) 关键字 是数据元素(或记录)中某个数据项的值,用以标志一个数据元素(或记录)。 若此关键字可以识别唯一的一个记录,则称为“主关键字”。 若此关键字能识别若干个记录,则称之为“次关键字”。 查找 根据给定的某个值,在查找表中确定一个其关键字等于给定值得数据元素(或记录) 若查找表中存在这样一个记录,则称“查找成功”,查找结果为:给出整个记录的信息,或指示该记录在查找表中的位置;否则称为“查找不成功”,查找结果:给出“空记录”或“空指针” 如何进行查找? 取决于查找表的结构 然而,查找表本身是一种松散的结构,因此,为了提高查找的效率,需要在查找表中的匀速之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。 根据操作类型的不同: 1、 静态查找表 (仅作查询与检索操作) 2、动态查找表 数据对象D: 数据关系R: D是具有相同特性的数 据元素的集合。 数据元素同属一个集合。 ADT StaticSearchTable { 1.抽象数据类型的定义 D是具有相同特性的数 据元素的集合。每个数 据元素含有类型相同的 关键字,可唯一标识数 据元素。 主关键字 Create(ST, n); Destroy(ST); Search(ST, key); Traverse(ST, Visit()); 基本操作 P: 9.1静态查找表 1.顺序表查找 2.有序表查找 3.静态树表查找 4.索引顺序表查找 静态查找表的查找算法 1)顺序查找 即用逐一比较的办法顺序查找关键字, 技巧: 把待查关键字key存入表头或表尾(俗称“哨兵”), 即用逐一比较的办法顺序查找关键字, 这显然是最直接的办法。 技巧: 把待查关键字key存入表头或表尾(俗称“哨兵”),这样可以加快执行速度。 ST.elem i ST.elem i 60 i key=64 key=60 i 64 示例:已知静态查找表ST如下: int Search_Seq(SSTable ST, KeyType key) { // 在顺序表ST中顺序查找其关键字等于 // key的数据元素。若找到,则函数值为 // 该元素在表中的位置,否则为0。 ST.elem[0].key = key; // “哨兵” for (i=ST.length; ST.elem[i].key!=key; --i); // 从后往前找 return i; // 找不到时,i为0 } // Search_Seq int Search_Seq(SSTable ST, KeyType key) { pd=0; // 判断标记 for (i=1;i=ST.length; i++) if (ST.elem[i].key==key) {pd=i; // 判断标记记录具体位置 break; } return pd; } // Search_Seq 实践:在上题的基础上写出从前往后找的算法

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档