c语言数据结构算法与应用,数据结构算法与应用-C语言描述007.pdf

下载

下载

第7章 跳表和散列

对于一个有n 个元素的有序数组,用折半搜索法进行搜索所需要的时间为 O ( l o gn) ,而对一

个有序链表进行搜索所需要的时间为 O (n) 。我们可以通过对有序链表上的全部或部分节点增加

额外的指针,来提高搜索性能。在搜索时,可以通过这些指针来跳过链表中若干个节点,因此

没有必要从左到右搜索链表中的所有节点。

增加了向前指针的链表叫作跳表。跳表不仅能提高搜索性能,同时也可以提高插入和删除

操作的性能。它采用随机技术决定链表中哪些节点应增加向前指针以及在该节点中应增加多少

个指针。采用这种随机技术,跳表中的搜索、插入、删除操作的时间均为 O ( l o gn) ,然而,最

坏情况下时间复杂性却变成 (n) 。相比之下,在一个有序数组或链表中进行插入 /删除操作的

时间为O( n) ,最坏情况下为 (n) 。

散列法是用来搜索、插入、删除记录的另一种随机方法。与跳表相比,它的插入 /删除操

作时间提高到 ( 1 ) ,但最坏情况下仍为 (n) 。尽管如此,在经常将所有元素按序输出或按序

号搜索元素时(如寻找第1 0个最小元素) ,跳表的执行效率将优于散列。

本章所给出的应用是关于文本压缩和解压缩的应用,该应用用散列实现。所设计的程序基

于当前流行的L i v _ Z e m p e l _ We l c h算法(简称L Z W算法)。

7.1 字典

字典(d i c t i o n a r y )是一些元素的集合。每个元素有一个称作key 的域,不同元素的key 各

不相同。有关字典的操作有:

• 插入具有给定关键字值的元素。

• 在字典中寻找具有给定关键字值的元素。

• 删除具有给定关键字值的元素。

抽象数据类型D i c t i o n a ry 的描述见ADT 7-1 。若仅按照一个字典元素本身的关键字来访问该

元素,则称为随机访问(random access )。而顺序访问(sequential access )是指按照关键字的

递增顺序逐个访问字典中的元素。顺序访问需借助于 Begin (用来返回关键字最小的元素 )和

Next (用来返回下一个元素)等操作来实现。对于本章中所实现的部分字典,既可以采用随机访

问方式,也可以采用顺序访问方式。

ADT7-1 字典的抽象数据类型描述

抽象数据类型D i c t i o n a ry {

实例

具有不同关键字的元素集合

操作

C re a t e( ) :创建一个空字典

S e a rc h(k, x ) :搜索关键字为k 的元素,结果放入x ;

如果没找到,则返回f a l s e ,否则返回t r u e

I n s e rt (x) :向字典中插入元素x

第 7章 跳表和散列 2 1 9

下载

Delete (k, x) :删除关键字为k 的元素,并将其放入x

}

有重复元素的字典(dictionary with duplicates )与上面定义的字典相似,只是它允许多个

元素有相同的关键字。在有重复元素的字典中,在进行搜索和删除时需要一个规则来消除岐义。

也就是说,如果要搜索(或删除)关键字为k 的元素,那么在所有关键字为k 值的元素中应该返回

(或删除)哪一个呢? 在有些字典应用中,可能需要:删除在某个时间以后插入的所有元素。

例7-1 一个班中注册学习数据结构课程的学生构成了一个字典。当有一个新学生注册时,就

要在字典中插入与该学生相关的元素 (记录) 。当有人要放弃这门课程时,则删除他的记录。在

上课过程中,老师可以查询字典以得到与某特定学生相关的记录或修改记录 (例如,加入或修

改考试成绩) 。学生的姓名域可作为关键字。

例7-2 在编译器中定义用户描述符的符号表( symbol tab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《数据结构算法应用C语言描述PDF》是一本关于数据结构算法C语言的实现和应用的电子书。这本书主要介绍了各种数据结构算法C语言的实现方式以及它们在实际应用的使用。 首先,这本书详细介绍了常见的数据结构,如数组、链表、栈、队列、树和图等。对于每种数据结构,书提供了相应的C语言实现代码,帮助读者理解数据结构的基本原理和操作。同时,书还介绍了每种数据结构的优缺点以及适用的场景,使读者能够更好地选择合适的数据结构来解决实际问题。 其次,这本书还介绍了常用的算法,如排序、查找、图算法等。为了方便读者理解和学习,每个算法都给出了C语言实现代码,并对算法的原理和复杂度进行了详细解释。此外,书还介绍了一些基本的算法设计思想,如贪心算法、分治算法和动态规划等,帮助读者更好地理解和应用算法。 最后,这本书还通过一些实际应用案例展示了数据结构算法在实际开发应用。这些案例包括文本编辑器、文件系统和数据库等,通过应用这些案例可以帮助读者更好地理解和应用数据结构算法。 总之,《数据结构算法应用C语言描述PDF》是一本很好的学习资源,它通过给出C语言的实现代码和实际应用案例,帮助读者学习和理解数据结构算法的核心概念和应用方法,对于提高编程能力和解决实际问题有很大帮助。 ### 回答2: 《数据结构算法应用C语言描述PDF》是一本介绍数据结构算法C语言应用的书籍。这本书主要内容包括数据结构的基本概念、算法的设计与分析以及在C语言的具体实现。 首先,书详细介绍了数据结构的基本概念,包括线性表、栈、队列、链表、树、图等常见的数据结构。对于每种数据结构,书给出了其定义、特征以及常用操作的实现方法,并且通过示例代码加以说明,使读者能够更好地理解和掌握这些数据结构的特点和使用方法。 其次,书介绍了算法的基本概念和常用的算法设计方法,如分治法、贪心法、动态规划等。对于每种算法设计方法,书给出了其基本思想、步骤和实现过程,并通过一些经典算法问题的解决实例,将理论知识与实际问题结合起来,帮助读者更好地理解和运用这些算法。 此外,书还涉及了一些常用的排序算法、查找算法以及图算法等内容。对于排序算法,书给出了冒泡排序、插入排序、选择排序、快速排序等常见的算法及其实现代码;对于查找算法,书介绍了顺序查找、二分查找等常用的算法及其实现方法;对于图算法,书介绍了深度优先搜索、广度优先搜索以及最短路径算法等重要的图算法,并给出了相应的代码实现。 总之,《数据结构算法应用C语言描述PDF》一书全面介绍了数据结构算法C语言应用,通过具体的实例和代码实现,帮助读者深入理解和掌握这些知识,并能够将其应用于实际问题的解决。这本书对于计算机科学与技术专业的学生以及从事相关工作的人员都是一本很好的参考书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值