数据结构-查找DS-chap.ppt
《数据结构-查找DS-chap.ppt》由会员分享,可在线阅读,更多相关《数据结构-查找DS-chap.ppt(53页珍藏版)》请在三一办公上搜索。
1、第8章 查找,主要内容,第2章至第7章线性或非线性的数据结构本章查找表(实际应用中大量使用)静态查找表及查找算法顺序表有序表静态树表索引顺序表动态查找表及查找算法二叉排序树平衡的二叉排序树B树哈希表及查找算法哈希表,重点与难点,本章的重点静态查找表及查找算法顺序表顺序查找有序表折半查找动态查找表及查找算法二叉排序树查找、建立与删除哈希表及查找算法哈希表建立、查找,重点与难点,本章的难点静态查找表及查找算法静态树表动态查找表及查找算法二叉排序树查找、建立与删除平衡的二叉排序树B树哈希表及查找算法哈希表建立、查找,基本概念,关键字(Key)是数据元素(或记录)中某个数据项的值,用它可以标识(识别)
2、一个数据元素(或记录)。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)(对不同的记录,其主关键字均不同)。反之,称用以识别若干记录的关键字为次关键字(Secondary Key)。当数据元素只有一个数据项时,其关键字即为该数据元素的值。查找(Searching)根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在这样的一个记录,则称查找是成功的,查找的结果为给出整个记录的信息,或指示该记录在查找表中的位置;若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可给出一个“空”记录或“空”指针。,基本概念,查找表(Se
3、arch Table):由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。对查找表经常进行的操作:查询某个“特定的”数据元素是否在查找表中;检索某个“特定的”数据元素的各种属性;在查找表中插入一个数据元素;从查找表中删去某个数据元素。查找表的分类:静态查找表(Static Search Table):对查找表只作前两种统称为“查找”的操作。动态查找表(Dynamic Search Table):在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素。,8.1 静态查找表,抽象数据类型静态
4、查找表的定义ADT StaticSearchTable数据对象D:具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。数据关系R:数据元素同属一个集合。基本操作P:Create(&ST,n);操作结果:构造一个含n个数据元素的静态查找表ST。Destroy(&ST);初始条件:静态查找表ST存在。操作结果:销毁表ST。,8.1 静态查找表,抽象数据类型静态查找表的定义Search(ST,key);初始条件:静态查找表ST存在,key为和关键字类型相同的给定值。操作结果:若ST中存在其关键字等于key的数据元素,则函数值为该元素的值或在表中位置,否则为“空”。T
5、raverse(ST,visit();初始条件:静态查找表ST存在,visit是对元素操作的应用函数。操作结果:按某种次序对ST的每个元素调用函数visit()一次且仅一次,一旦visit()失败,则操作失败。ADT StaticSearchTable,8.1 静态查找表,小结顺序表的(简单)查找设置监视哨适用的存储结构:顺序、链式有序表的折半查找有序表的等概率查找适用的存储结构:顺序、链式其他有序表查找方法:斐波那契查找、插值查找静态树表的查找有序表的不等概率查找适用的存储结构:二叉链表索引顺序表的查找顺序表的查找的改进适用的存储结构:顺序、顺序与链式结合,8.2 动态查找表,动态查找表的特
6、点表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在其关键字等于 key的记录,则查找成功并返回位置信息;否则,插入关键字等于key的记录。一种基于树的查找法(树表查找法)将待查表组织成特定树的形式并在树结构上实现查找的方法。,8.2 动态查找表,抽象数据类型动态查找表的定义ADT DynamicSearchTable数据对象D:具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。数据关系R:数据元素同属一个集合。基本操作P:InitDSTable(&DT);操作结果:构造个空的动态查找表DT。DestroyDSTable(&DT);初始条件:
7、动态查找表DT 存在。操作结果:销毁动态查找表DT。SearchDSTable(DT,key);初始条件:动态查找表DT存在,key为和关键字类型相同的给定值。操作结果:若DT中存在关键字等于key的数据元素,则函数值为该元素值或在表中位置,否则为“空”。,8.2 动态查找表,抽象数据类型动态查找表的定义InsertDSTable(&DT,e);初始条件:动态查找表DT存在,e为待插入数据元素。操作结果:若DT中不存在其关键字等于e.key的数据元素,则插入e到DT。DeleteDSTable(&DT,key);初始条件:动态查找表DT存在,key为和关键字类型相同的给定值。操作结果:若DT中
8、存在其关键字等于key的数据元素,则删除。TraverseDSTable(DT,Visit();初始条件:动态查找表DT存在,Visit是对结点操作的应用函数。操作结果:按某种次序对DT的每个结点调用函数Visit()一次且至多一次。一旦visit()败,则操作失败。ADT DynamicSearchTable,8.2 动态查找表,存储结构二叉链表主要内容二叉排序树二叉排序树的定义二叉排序树的查找过程二叉排序树的插入二叉排序树的建立二叉排序树的删除二叉排序树的查找分析平衡的二叉排序树的定义,8.2 动态查找表二叉排序树,二叉排序树的定义:一种特殊结构的二叉树,或者是一棵空树,或者是具有如下性质
9、的二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;它的左右子树也分别为二叉排序树。中序遍历二叉排序树递增有序序列,8.2 动态查找表二叉排序树,二叉排序树的查找与次优二叉树类似当二叉排序树不空时,首先将给定值和根结点的关键字比较,若相等,则查找成功,否则将依据给定值和根结点的关键字之间的大小关系,分别在左子树或右子树上继续进行查找。,35,15,45,50,40,25,10,20,30,搜索45 搜索成功,搜索28搜索失败,8.2 动态查找表二叉排序树,二叉排序树查找的递归算法BiTree SearchBST(BiTr
10、ee T,KeyType key)/在根指针T所指二叉排序树中递归地查找某关键字等于key的数据元素/若查找成功,则返回指向该数据元素结点的指针,否则返回空指针 if(!T)|EQ(key,T-data.key)return(T);/查找结束else if LT(key,T-data.key)return(SearchBST(T-lchild,key);/在左子树中继续查找 else return(SearchBST(T-rchild,key);/在右子树中继续查找/SearchBST,8.2 动态查找表二叉排序树,二叉排序树查找的非递归算法BiTree NSearchBST(BiTree T
11、,KeyType key)/在根指针T所指二叉排序树中非递归地查找某关键字等于key的数据元素/若查找成功,则返回指向该数据元素结点的指针,否则返回空指针 p=T;/指针p指向根结点,搜索从根结点开始 while(p!=NULL/NSearchBST,8.2 动态查找表二叉排序树,二叉排序树的插入二叉排序树的查找的特点动态树表查找树的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。新插入的结点一定是一个新添加的叶子结点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。插入前必须要查找,以确定要插入的位置,因此必须修改二叉排序树的查找
12、算法查找不成功时必须返回插入的位置,8.2 动态查找表二叉排序树,二叉排序树查找的递归算法(查找不成功时返回插入的位置)Status SearchBST(BiTree T,KeyType key,BiTree f,BiTree&p)/在根指针T所指二叉排序树中递归地查找其关键字等于key的数据元素,/若查找成功,则指针p指向该数据元素结点,并返回TRUE,/否则指针p指向查找路径上访问的最后一个结点并返回FALSE,/指针f指向T的双亲,其初始调用值为NULLif(!T)p=f;return FALSE;/查找不成功else if EQ(key,T-data.key)p=T;return TR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 查找 DS chap
链接地址:https://www.31ppt.com/p-6296811.html