数据结构(c语言版李春葆)(精品·公开课件).ppt

数据结构(c语言版李春葆)(精品·公开课件).ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 如何进行查找? 取决于查找表的结构,即记录在查找表中所处的位置。然而,查找表本身是一种很松散的结构,因此,为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,即用另外一种结构来表示查找表。 一些约定: 典型的关键字类型说明: typedef float KeyType; //实型 typedef int KeyType; //整型 typedef char *KeyType; //字符串型 数据元素类型定义为: typedef struct{ KeyType key; // 关键字域 ... //其它域 }ElemType; 对两个关键字的比较约定为如下的宏定义: 对数值型关键字: #define EQ(a,b) ((a)==(b)) #define LT(a,b) ((a)(b)) #define LQ(a,b) ((a)=(b)) 对字符串型关键字: #define EQ(a,b) (!strcmp((a),(b))) #define LT(a,b) (strcmp((a),(b))0) #define LQ(a,b) (strcmp((a),(b))=0) 8.1 静 态 查 找 表 抽象数据类型静态查找表的定义为: ADT StaticSearchTable{ 数据对象D:D是具有相同特性的数据元素的集合。 各个数据元素均含有类型相同、可唯一 标识数据元素的关键字。 数据关系R:数据元素同属一个集合。 基本操作P: Create(ST,n): 操作结果:构造一个含n个数据元素的静态查找表ST。 Destroy(ST): 初始条件:静态查找表ST存在。 操作结果:销毁表ST。 Search(ST,key): 初始条件:静态查找表ST存在,key为和关键字 类型相同的给定值。 操作结果:若ST中存在其关键字等于key的数据元素, 则函数值为该元素的值或在表中的位置, 否则为 “空”。 Traverse(ST,visit( )): 初始条件:静态查找表ST存在, visit是对元素操作的应用函数。 操作结果:按某种次序对ST的每个元素调用 函数visit()一次且仅一次,一旦visit() 失败,则操作失败。 } ADT StaticSearchTable 静态查找表可以有不同的表示方法,在不同的表示方法中,实现查找操作的方法也不同。 8.1.1 顺序表的查找 以顺序表或线性链表表示静态查找表,则Search函数可用顺序查找来实现。本节中只讨论它在顺序存储结构模块中的实现。 //静态查找表的顺序存储结构 typdef struct{ ElemType * elem; //数据元素存储空间基址 //建表时按实际长度分配,0号单元留空 int length; //表长度 }SSTable; 算法描述: int Search_Seq(SSTable ST,KeyType key){ //在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。 ST.elem[0].key = key; //0号单元作为监视哨 for ( i=ST.length; ST.elem[i].key!=key; --i ); //从后往前找 return i; //找不到时,i为0 } // Search_Seq

您可能关注的文档

文档评论(0)

花好月圆 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档