数据结构之查找

        查找表(SearchTable)是由同一类型的数据元素(或记录)构成的集合。由于“集合中的数据元素之间存在着完全松散的关系,因此查找表是一-种非常灵便的数据结构。

        对查找表经常进行的操作有:(1)查询某个“特定的"数据元素是否在查找表中;(2)检索某个“特定的”数据元素的各种属性;(3)在查找表中插入-一个数据元素;(4)从查找表中删去某个数据元素。若对查找表只作前两种统称为“查找"的操作,则称此类查找表为静态查找表(Static Search Table)。若对查找表只作前两种统称为“查找"的操作,则称此类查找表为静态查找找表中删除已存在的某个数据元素,则称此类表为动态查找表(DynamicSearchTable)。

        在日常生活中,人们几乎每天都要进行“查找"工作。例如,在电话号码簿中查阅“某单位”或“某人”的电话号码;在字典中查阅“某个词”的读音和含义等等。其中“电话号码簿”和“字典”都可视作是一张查找表。

        在各种系统软件或应用软件中,查找表也是最常见的结构之一。如编译程序中符号表、信息处理系统中信息表等等。

        由.上述可见,所谓“查找”即为在一个含有众多的数据元素(或记录)的查找表中找出某个"特定的”数据元素(或记录)。

        为了便于讨论,必须给出这个“特定的"词的确切含义。首先需引人一个“关键字”的概念。

        关键字(Key)是数据元素(或记录)中某个数据项的值,用它可以标识(识别)一个数据元素(或记录)。若此关键字可以惟一地标识一个记录,则称此关键字为主关键字(Primary Key)(对不同的记录,其主关键字均不同)。反之,称用以识别若干记录的关键字为次关键字(SecondaryKey)。当数据元素只有-一个数据项时,其关键字即为该数据元索的值。

        查找(Searching)根据给定的某个值 ,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在这样的一个记录,则称查找是成功的,此时查找的结果为给出整个记录的信息,或指示该记录在查找表中的位置;若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可给出-一个“空”记录或“空”指针。

        例如,当用计算机处理大学人学考试成绩时,全部考生的成绩可以用图1所示表的结构储存在计算机中,表中每- -行为一个记录,考生的准考证号为记录的关键字。假设给定值为179326,则通过查找可得考生陆华的各科成绩和总分,此时查找为成功的。若给定值为179238,则由于表中没有关键字为179238的记录,则查找不成功。.

        如何进行查找?显然,在一个结构中查找某个数据元素的过程依赖于这个数据元素在结构中所处的地位。因此,对表进行查找的方法取决于表中数据元素依何种关系(这个关系是人为地加上的)组织在-起的。例如查电话号码时,由于电话号码簿是按用户(集体或个人)的名称(或姓名)分类且依笔划顺序编排,则查找的方法就是先顺序查找待查用户的所属类别,然后在此类中顺序查找,直到找到该用户的电话号码为止。又如,查阅英文单词时,由于字典是按单词的字母在字母表中的次序编排的,因此查找时不需要从字典中第一个单词比较起,而只要根据待查单词中每个字母在字母表中的位置查到该单词。

图1  :高考成绩表示例

         同样,在计算机中进行查找的方法也随数据结构不同而不同。正如前所述,本章讨论
的查找表是一种非常灵便的数据结构。但也正是由于表中数据元素之间仅存在着“同属
一个集合”的松散关系,给查找带来不便。为此,需在数据元素之间人为地加上- -些关系,
以便按某种规则进行查找,即以另一种数据结构来表示查找表。这里将分别就静态查找
表和动态查找表两种抽象数据类型讨论其表示和操作实现的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值