数据结构第9章 查找 4

合集下载

数据结构第九章排序习题与答案

数据结构第九章排序习题与答案

习题九排序一、单项选择题1.下列内部排序算法中:A.快速排序 B.直接插入排序C. 二路归并排序D.简单选择排序E. 起泡排序F.堆排序(1)其比较次数与序列初态无关的算法是()(2)不稳定的排序算法是()(3)在初始序列已基本有序(除去n 个元素中的某 k 个元素后即呈有序, k<<n)的情况下,排序效率最高的算法是()(4)排序的平均时间复杂度为O(n?logn)的算法是()为 O(n?n) 的算法是()2.比较次数与排序的初始状态无关的排序方法是( )。

A.直接插入排序B.起泡排序C.快速排序D.简单选择排序3.对一组数据( 84, 47, 25, 15, 21)排序,数据的排列次序在排序的过程中的变化为(1) 84 47 25 15 21(2) 15 47 25 84 21(3) 15 21 25 84 47(4) 15 21 25 47 84则采用的排序是 ()。

A. 选择B.冒泡C.快速D.插入4.下列排序算法中 ( )排序在一趟结束后不一定能选出一个元素放在其最终位置上。

A. 选择B.冒泡C.归并D.堆5.一组记录的关键码为(46,79,56, 38,40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。

A. (38,40,46,56,79,84) B. (40,38,46,79,56,84)C. (40,38,46,56,79,84) D. (40,38,46,84,56,79)6.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。

A.冒泡 B. 希尔C. 快速D. 堆7.就平均性能而言,目前最好的内排序方法是() 排序法。

A. 冒泡B.希尔插入C.交换D.快速8.下列排序算法中,占用辅助空间最多的是:()A. 归并排序B.快速排序C.希尔排序D.堆排序9.若用冒泡排序方法对序列 {10,14,26,29,41,52}从大到小排序,需进行()次比较。

《数据结构》填空作业题(答案)

《数据结构》填空作业题(答案)

《数据结构》填空作业题答案第 1 章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。

2.程序包括两个内容:数据结构和算法。

3.数据结构的形式定义为:数据结构是一个二元组:Data Structure =( D, S)。

4.数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。

5.数据的逻辑结构可以分类为线性结构和非线性结构两大类。

6.在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。

7.在树形结构中,数据元素之间存在一对多的关系。

8.数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。

9.数据的逻辑结构包括线性结构、树形结构和图形结构 3 种类型,树型结构和有向图结构合称为非线性结构。

10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。

11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。

12.数据的存储结构可用 4 种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。

13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。

14.数据结构在物理上可分为顺序存储结构和链式存储结构。

15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。

16.数据元素可由若干个数据项组成。

17.算法分析的两个主要方面是时间复杂度和空间复杂度。

18.一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。

19.算法具有如下特点:有穷性、确定性、可行性、输入、输出。

20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。

数据结构c++版课后习题解析

数据结构c++版课后习题解析
输入:一个整数b
功能:将整数a与输入的整数b相加
输出:相加后的结果
后置条件:整数a的值发生改变
Sub
前置条件:存在一个整数a
输入:一个整数b
功能:将整数a与输入的整数b相减
输出:相减的结果
后置条件:整数a的值发生改变
Multi
前置条件:存在一个整数a
输入:一个整数b
功能:将整数a与输入的整数b相乘
输出:相乘的结果
【解答】其逻辑结构图如图1-3所示,它是一种图结构。
(2)为整数定义一个抽象数据类型,包含整数的常见运算,每个运算对应一个基本操作,每个基本操作的接口需定义前置条件、输入、功能、输出和后置条件。
【解答】整数的抽象数据类型定义如下:
ADT integer
Data
整数:可以是正整数(1, 2, 3, … )、负整数(-1, -2, -3, …)和零
【解答】D
【分析】抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。
(6)算法指的是( )。
A 对特定问题求解步骤的一种描述,是指令的有限序列。
B 计算机程序 C 解决问题的计算方法 D 数据处理
【解答】A
【分析】计算机程序是对算法的具体实现;简单地说,算法是解决问题的方法;数据处理是通过算法完成的。所以,只有A是算法的准确定义。
本章导学67
习题解析68
第9章索引技术78
本章导学78
习题解析78
第 1 章 绪 论
本章导学
1. 知识结构图
本章的知识结构如图1-1所示,其中第二层的椭圆代表本章的学习主线。
2. 学习要点
对本章的学习要从两条主线出发,一条主线是数据结构,包括数据结构的相关概念及含义,另一条主线是算法,包括算法的相关概念、描述方法以及时间复杂度的分析方法。

数据结构第九、十章作业答案

数据结构第九、十章作业答案

数据结构第九、⼗章作业答案第九章查找⼀、填空题1. 在数据的存放⽆规律⽽⾔的线性表中进⾏检索的最佳⽅法是顺序查找(线性查找)。

2. 线性有序表(a 1,a 2,a 3,…,a 256)是从⼩到⼤排列的,对⼀个给定的值k ,⽤⼆分法检索表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。

设有100个结点,⽤⼆分法查找时,最⼤⽐较次数是 7 。

3. 假设在有序线性表a[1..20]上进⾏折半查找,则⽐较⼀次查找成功的结点数为1;⽐较两次查找成功的结点数为 2 ;⽐较四次查找成功的结点数为 8 ,其下标从⼩到⼤依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。

解:显然,平均查找长度=O (log 2n )<5次(25)。

但具体是多少次,则不应当按照公式)1(log 12++=n n n ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。

因为这是在假设n =2m -1的情况下推导出来的公式。

应当⽤穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.74.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 ⽐较⼤⼩。

5. 在各种查找⽅法中,平均查找长度与结点个数n ⽆关的查找⽅法是散列查找。

6. 散列法存储的基本思想是由关键字的值决定数据的存储地址。

7. 有⼀个表长为m 的散列表,初始状态为空,现将n (n8、设⼀哈希表表长M 为100 ,⽤除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )9、在各种查找⽅法中,平均查找长度与结点个数⽆关的是哈希查找法10、对线性表进⾏⼆分查找时,要求线性表必须以顺序⽅式存储,且结点按关键字有序排列。

数据结构考研试题精选及答案第9章 查找答案

数据结构考研试题精选及答案第9章 查找答案

第9章集合部分答案解释如下。

4.不能说哪种哈希函数的选取方法最好,各种选取方法有自己的适用范围。

8.哈希表的结点中可以包括指针,指向其元素。

11.单链表不能使用折半查找方法。

20.按插入后中序遍历是递增序列的原则,若某结点只有右子树,而插入元素的关键字小于该结点的关键字,则会插入到该结点的左侧,成为其左孩子。

这种插入就不是插入到叶子下面。

21.从平衡因子定义看,完全二叉树任一结点的平衡因子的绝对值确实是小于等于1。

但是,平衡二叉树本质上是二叉排序树,完全二叉树不一定是排序树。

故不能说完全二叉树是平衡二叉树。

23.某结点的左子树根结点不一定是它的中序前驱,其右子树根结点也不一定是它的中序后继。

24.在等概率下,查找成功时的平均查找长度相同,查找失败时的平均查找长度不相同。

26.只有被删除结点是叶子结点时命题才正确。

三.填空题1.n n+1 2.4 3.6,9,11,12 4.55.26(第4层是叶子结点,每个结点两个关键字) 6.1,3,6,8,11,13,16,19 7.5,96 8.m-1,「m/2⎤-1 9.2,4,310.(1)哈希函数(2)解决冲突的方法 (3)选择好的哈希函数 (4)处理冲突的方法 (5)均匀(6)简单11.AVL树(高度平衡树,高度平衡的二叉排序树),或为空二叉树,或二叉树中任意结点左子树高度与右子树高度差的绝对值小于等于1。

12.小于等于表长的最大素数或不包含小于20的质因子的合数 13.16 14.⎣㏒n」+1215.(1)45 (2)45 (3)46(块内顺序查找) 16.k(k+1)/2 17.30,31.5(块内顺序查找)18.(1)顺序存储或链式存储 (2)顺序存储且有序 (3)块内顺序存储,块间有序 (4) 散列存储19.(n+1)/2 20.(n+1)/n*log2(n+1)-1 21.结点的左子树的高度减去结点的右子树的高度22.(1)顺序表(2)树表(3)哈希表(4)开放定址方法(5)链地址方法(6)再哈希(7)建立公共溢出区23.直接定址法 24.log⎡m/2⎤(21n+)+1 25.O(N) 26.n(n+1)/227.54 28.31 29.37/12 30.主关键字 31.左子树右子树32.插入删除 33.14 34.(1)126 (2)64 (3)33 (4)65 35.(1)low<=high (2) (low+hig) DIV 2 (3) binsrch:=mid (4)binsrch:=0 36.(1) k (2) I<n+1 37.(1)rear=mid-1 (2)head=mid+1 (3)head>rear 38.(1)p!=null (2)pf=p (3)p!=*t (4)*t=null四.应用题1.概念是基本知识的主要部分,要牢固掌握。

数据结构 (C语言版) (第二版)(目录)

数据结构 (C语言版) (第二版)(目录)

数据结构(C语言版)(第二版)(目录)第1章导论
1 算法和数据结构
2 什么是数据结构
3 符号,引理,定理与证明
4 说明文篇
5 C语言和程序设计
6 总结
第2章算法分析
1 算法的衡量标准
2 时间和空间复杂度分析
3 运行时复杂度分析
4 递归分析
第3章线性表
1 一维数组
2 线性表
3 顺序表
4 链表
5 循环链表
6 树表
7 双向链表
第4章栈
1 栈的定义
2 栈的抽象数据类型
3 栈的基本操作
4 栈的应用——后缀表达式的求算
第7章树
1 树的定义
2 树的抽象数据类型
3 树的存储
4 树的遍历
5 二叉树
6 二叉排序树(搜索树)
7 平衡二叉树
8 哈夫曼树
9 图的存储
第8章查找
1 静态查找
2 哈希表
3 动态单值查找
第10章数据结构综合应用
1 树的遍历
2 贪心法
3 回溯法
4 分析与评价
附录 A C语言库
1 算法入口及时区函数
2 内存处理函数
3 字符串处理函数
4 文件处理函数
附录 B 内存分配方式。

数据结构.第9章.查找.4.哈希表

数据结构.第9章.查找.4.哈希表

§9.3 哈希表
开放地址法
例:关键码集为 {47,7,29,11,16,92,22,8,3}, 设:哈希表表长为m=11; 哈希函数为Hash(key)=key mod 11; 拟用线性探测法处理冲突。建哈希表: 0 1
11 22
2
3
4
5
6
3
7
7
8
29
9
8
10
47 92 16
§9.3 哈希表
开放地址法
选用关键字的某几位组合成哈希地址。
选用原则应当是:各种符号在该位上出现的频率大致
相同。
适于关键字位数比哈希地址位数大,且可能出现的关 键字事先知道的情况。
§9.3 哈希表
数字分析法
例:有一组(例如80个)关键码,其样式如下: 讨论: 3 4 7 0 5 2 4 ① 第1、2位均是“3和4”,第3位也只有 3 4 9 1 4 8 7 3 4 8 2 6 9 6 “ 7、8、9”,因此,这几位不能用,余 3 4 8 5 2 7 0 下四位分布较均匀,可作为哈希地址选用。 3 4 8 6 3 0 5 ② 若哈希地址取两位(因元素仅80个), 3 4 9 8 0 5 8 则可取这四位中的任意两位组合成哈希地 3 4 7 9 6 7 1 址,也可以取其中两位与其它两位叠加求 3 4 7 3 9 1 9 和后,取低两位作哈希地址。 位号:① ② ③ ④ ⑤ ⑥ ⑦
拟用二次探测法处理冲突。建哈希表如下: Hi = ( H(K)+di ) mod m 其中di =12, -12, 22,-22,…, j2, -j2 ( j≤m/2)。
0 1
11 22
2
3
3
4
5
6
7

数据结构-chap9 (4)B树

数据结构-chap9 (4)B树

890 782 613 568 502 386 345 301 j 375 363 487 456 419 k
c
256 g 294 281 273 a
h
336 320 317
223 177 162 f 154 071 b 121 109 e
058 024 016
d
一棵5阶B-树
B-树的例子
i
自测题 1
}BTNode, *Btree; //B-树结点和B-树类型
typedef struct { BTNode int int *pt; i; tag; //指向找到的结点 //1…m,在结点中的关键字序号 //1查找成功,0查找失败
}Result; //B-树的查找结果类型 B-树查找算法: Result SearchBTree(Btree T, KeyType K) { //在n阶B树T上查找关键字K,返回结果(pt,i,tag).若查找成功, 则tag=1.指针pt所指向结点第i个关键字等于K,否则tag=0, 等于K的关键字应插入在指针pt所指向结点中第i个和i+1个关 键字之间.
B-树的删除

在B-树上删除一个关键字,则首先要找到该关键字所在的结
点,并从中删除之。

若该结点为最下层的非终端结点,且其中的关键字个数不少 于 m / 2,则删除完成。否则要进行“合并”结点的操作。

假如所删除的关键字不是最下层的某个非终端结点Ki,则可以 指针Pi所指子树中的最下层的非终端结点中的最小关键字y与
B-树的定义

一棵m阶的B-树,或为空树,或为满足下列特性的m叉树: – (1)树中每个结点至多有m棵子树; – (2)若根结点不是叶子结点,则至少有两棵子树; – (3)除根结点之外的所有非终端结点至少有m/2棵子树;

数据结构第九章习题课

数据结构第九章习题课

1.用二分(对半)查找表的元素的速度比用顺序法( )A.必然快 B. 必然慢 C. 相等 D. 不能确定2.具有12个关键字的有序表,折半查找的平均查找长度()A. 3.1B. 4C. 2.5D. 53.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用( )查找法。

A. 分块查找B. 顺序查找C. 折半查找D. 基于属性4.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( )A.(100,80,90,60,120,110,130) B.(100,120,110,130,80,60,90)C.(100,60,80,90,120,110,130)D. (100,80,60,90,120,130,110)5. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。

A. LLB. LRC. RLD. RR7. 下面关于B和B+树的叙述中,不正确的是( )A. B树和B+树都是平衡的多叉树。

B. B树和B+树都可用于文件的索引结构。

C. B树和B+树都能有效地支持顺序检索。

D. B树和B+树都能有效地支持随机检索。

8. m阶B-树是一棵( )A. m叉排序树B. m叉平衡排序树C. m-1叉平衡排序树D. m+1叉平衡排序树9. 设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key MOD 13,散列地址为1的链中有()个记录。

A.1 B. 2 C. 3 D. 410.下面关于哈希(Hash,杂凑)查找的说法正确的是( )A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小B.除留余数法是所有哈希函数中最好的C.不存在特别好与坏的哈希函数,要视情况而定D.若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单的将该元素删去即可11. 若采用链地址法构造散列表,散列函数为H(key)=key MOD 17,则需((1))个链表。

数据结构考试题库含答案

数据结构考试题库含答案

数据构造习题集含答案目录目录1选择题2第一章绪论2第二章线性表4第三章栈和队列6第四章串7第五章数组和广义表8第六章树和二叉树8第七章图11第八章查找13第九章排序14简答题19第一章绪论19第二章线性表22第三章栈和队列24第四章串26第五章数组和广义表27第六章树和二叉树28第七章图31第八章查找31第九章排序32编程题34第一章绪论34第二章线性表34第三章栈和队列45第四章串45第五章数组和广义表45第六章树和二叉树45第七章图45第八章查找45第九章排序50选择题第一章绪论1.数据构造这门学科是针对什么问题而产生的?〔A 〕A、针对非数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与非数值计算的问题都针对D、两者都不针对2.数据构造这门学科的研究容下面选项最准确的是〔D 〕A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3.*班级的学生成绩表中查得三同学的各科成绩记录,其中数据构造考了90分,则下面关于数据对象、数据元素、数据项描述正确的选项是〔C 〕A、*班级的学生成绩表是数据元素,90分是数据项B、*班级的学生成绩表是数据对象,90分是数据元素C、*班级的学生成绩表是数据对象,90分是数据项D、*班级的学生成绩表是数据元素,90分是数据元素4.*数据构造是指〔A 〕。

A、数据元素的组织形式B、数据类型C、数据存储构造D、数据定义5.数据在计算机存储器表示时,物理地址与逻辑地址不一样,称之为〔C 〕。

A、存储构造B、逻辑构造C、链式存储构造D、顺序存储构造6.算法分析的目的是〔C 〕A、找出数据的合理性B、研究算法中的输入和输出关系C、分析算法效率以求改良D、分析算法的易懂性和文档型性7.算法分析的主要方法〔A 〕。

A、空间复杂度和时间复杂度B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性8.计算机部处理的根本单元是〔B 〕A、数据B、数据元素C、数据项D、数据库9.数据在计算机有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要〔B 〕。

数据结构课程1

数据结构课程1

-------------------
-------
-------
-------
-------
-------
这张表中的元素存在一个顺序关系,即谁在谁前,谁在谁 后的信息(即病人诊断顺序依次为张立,田方,……) 。 所以,可以用线性结构来刻画这种关系。。
例1-3 大学系级行政机构
大学系级行政机构,如图1.1所示:
数据结构的含义
因此可以认为,数据结构是介于数学、计算机硬件和计 算机软件三者之间的一门核心课程(如图1.1所示)。
数学
代数系统
编码理论 数据类型 算子关系
数据表示法
数据的操作 文件系统
存储装置
数据结构
硬件
数据存取
( 计 算 机 系机器组织
统设计)
数据组织
信息检索
软件
(计算机程 序设计)
图1.1 “数据结构”所处的地位
3. 数据的操作
一般而言,必须对数据进行加工处理,才能得到问题的 解。在非数值性问题中,对数据的操作(或运算)已不限 于对数据进行加、减、乘、除等数学运算。数据的操作是 定义在逻辑结构上的,而操作的具体实现是在存储结构上 进行的。基本的数据操作主要有以下几种:
(1)查找:在数据结构中寻找满足某个特定条件的数据元 素的位置或值。
现实问
数学模
算法
程序



图1.8 计算机求解问题的流程
即首先要从现实问题出发,抽象出一个适当的数学模型,
然后设计一个求解此数学模型的算法,最后根据这个算法 编出程序,经过测试、排错、运行直至得到最终的解答。 (现实)问题、数学模型、算法和程序是问题求解过程中 出现的四个不同的概念。

数据结构 第9章 查找4-哈希表

数据结构 第9章 查找4-哈希表

7、随机数法 Hash(key) = random ( key ) (random为伪随机函数)
适用于:关键字长度不等的情况。造表和查找都很方便。
小结:构造哈希函数的原则:
① ② ③ ④ ⑤ 执行速度(即计算哈希函数所需时间); 关键字的长度; 哈希表的大小; 关键字的分布情况; 查找频率。
三、冲突处理方法
14 H(14)=14%7=0
6个元素用7个 地址应该足够!
1
2
23 9
3
4
39 25 11
5
6
H(25)=25%7=4 H(11)=11%7=4
有冲突!
在哈希查找方法中,冲突是不可能避免的,只能 尽可能减少。
所以,哈希方法必须解决以下两个问题:
1)构造好的哈希函数
(a)所选函数尽可能简单,以便提高转换速度; (b)所选函数对关键码计算出的地址,应在哈希地址集中 大致均匀分布,以减少空间浪费。
讨论:如何进行散列查找?
根据存储时用到的散列函数H(k)表达式,迅即可查到结果! 例如,查找key=9,则访问H(9)=9号地址,若内容为9则成功; 若查不到,应当设法返回一个特殊值,例如空指针或空记录。
缺点:空间效率低!
若干术语
哈希方法 (杂凑法)
选取某个函数,依该函数按关键字计算元素的存储位置, 并按此存放;查找时,由同一个函数对给定值k计算地址, 将k与地址单元中元素关键码进行比较,确定查找是否成 功。
3. 乘余取整法
4. 数字分析法
5. 平方取中法
常用的哈希函数构造方法有:
6. 折叠法
7. 随机数法
1、直接定址法
(a、b为常数) 优点:以关键码key的某个线性函数值为哈希地址, 不会产生冲突. 缺点:要占用连续地址空间,空间效率低。

实用数据结构基础[第四版]课后习题

实用数据结构基础[第四版]课后习题

一、判断题(第一章绪论)1.数据元素是数据的最小单元。

答案:错误2.一个数据结构是由一个逻辑结构和这个逻辑结构上的基本运算集构成的整体。

答案:错误3.数据的存储结构是数据元素之间的逻辑关系和逻辑结构在计算机存储器内的映像。

答案:正确4.数据的逻辑结构是描述元素之间的逻辑关系,它是依赖于计算机的。

答案:错误5.用语句频度来表示算法的时间复杂度的最大好处是可以独立于计算机的软硬件,分析算法的时间答案:正确(第二章线性表)6.取顺序存储线性表的第i个元素的时间同i的大小有关。

答案:错误7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。

答案:正确8.线性链表的每一个节点都恰好包含一个指针域。

答案:错误9.顺序存储方式的优点的存储密度大,插入和删除效率不如练市存储方式好。

答案:正确10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。

答案:错误(第三章栈)11.栈是一种对进栈和出栈作了限制的线性表。

答案:错误12.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN表示栈满。

答案:错误13.链栈与顺序栈相比,其特点之一是通常不会出现满栈的情况。

答案:正确14.空栈就是所有元素都为0上的栈。

答案:错误15.将十进制数转换为二进制数是栈的典型应用之一。

答案:正确(第四章队列)16.队列式限制在两端进行操作的线性表。

答案:正确17.判断顺序队列为空的标准是头指针和尾指针都指向同一结点。

答案:错误18.在循环链列队中无溢出现像。

答案:错误19.在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。

答案:正确20.顺序队列和循环队列关于队满和队空的判断条件是一样的。

答案:错误(第五章串)21.串是n个字母的有限序列。

答案:错误22.串的堆分配存储是一种动态存储结构。

答案:正确23.串的长度是指串中不同字符的个数。

实用数据结构基础(第四版)课后习题

实用数据结构基础(第四版)课后习题

一、判断题(第一章绪论)1、数据元素就是数据得最小单元。

答案:错误2.一个数据结构就是由一个逻辑结构与这个逻辑结构上得基本运算集构成得整体。

答案:错误3.数据得存储结构就是数据元素之间得逻辑关系与逻辑结构在计算机存储器内得映像。

答案:正确4.数据得逻辑结构就是描述元素之间得逻辑关系,它就是依赖于计算机得。

答案:错误5、用语句频度来表示算法得时间复杂度得最大好处就是可以独立于计算机得软硬件,分析算法得时间答案:正确(第二章线性表)6、取顺序存储线性表得第i个元素得时间同i得大小有关。

答案:错误7、线性表链式存储得特点就是可以用一组任意得存储单元存储表中得数据元素。

答案:正确8、线性链表得每一个节点都恰好包含一个指针域。

答案:错误9、顺序存储方式得优点得存储密度大,插入与删除效率不如练市存储方式好。

答案:正确10、插入与删除操作就是数据结构中最基本得两种操作,所以这两种操作在数组中也经常使用。

答案:错误(第三章栈)11、栈就是一种对进栈与出栈作了限制得线性表。

答案:错误12、在C(或C++)语言中设顺序栈得长度为MAXLEN,则top=MAXLEN表示栈满。

答案:错误13、链栈与顺序栈相比,其特点之一就是通常不会出现满栈得情况。

答案:正确14、空栈就就是所有元素都为0上得栈。

答案:错误15、将十进制数转换为二进制数就是栈得典型应用之一。

答案:正确(第四章队列)16、队列式限制在两端进行操作得线性表。

答案:正确17、判断顺序队列为空得标准就是头指针与尾指针都指向同一结点。

答案:错误18、在循环链列队中无溢出现像。

答案:错误19、在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。

答案:正确20、顺序队列与循环队列关于队满与队空得判断条件就是一样得。

答案:错误(第五章串)21、串就是n个字母得有限序列。

答案:错误22、串得堆分配存储就是一种动态存储结构。

答案:正确23、串得长度就是指串中不同字符得个数。

李春葆《数据结构教程》(第4版)章节题库-第九章至第十二章(圣才出品)

李春葆《数据结构教程》(第4版)章节题库-第九章至第十二章(圣才出品)

第9章查找一、选择题1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为()。

A.(n-1)/2B.n/2C.(n+1)/2D.n【答案】C【解析】最快查找一次成功,最慢查找n次成功。

平均查找次数为(1+2+3+…+n)/n,那么ASL=(n+1)/2。

2.在一个有N个元素的有序单链表中查找具有给定关键字的结点,平均情况下的时间复杂性为()。

A.O(1)B.O(N)C.O(N2)D.O(NlogN)【答案】B【解析】二分查找的时间复杂度为O(logn)。

在一个用N个元素的有序单链表中查找具有给定关键字的结点,因为查找是从头结点开始的,需要使用指针顺序往下查找,因此时间复杂度为0(N)。

3.对线性表进行折半查找时,要求线性表必须()。

A.以顺序方式存储B.以顺序方式存储,且数据元素有序C.以链接方式存储D.以链接方式存储,且数据元素有序【答案】B【解析】二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。

因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

折半查找方法适用于对以顺序方式存储的有序表的查找,查找效率较高。

4.下列二叉排序树中查找效率最高的是()。

A.平衡二叉树B.二叉查找树C.没有左子树的二叉排序树D.没有右子树的二叉排序树【答案】A【解析】平衡二叉树的左子树和右子树的深度之差的绝对值不超过1。

这就保证了二叉树的深度是log2n级别的。

二叉查找树或者是一颗空数;或者是具有下列性质的二叉树:①若左子树不空,则左子树上所有结点的值均小于它的根结点的值;②若右子树不空,则右子树上所有结点的值均大于它的根结点的值;③左、右子树也分别为二叉排序树。

B、C、D 三项均不能保证左子树和右子树的深度之差的绝对值不超过1,甚至很大,因此查找效率低。

5.当在一个有序的顺序存储表上查找一个数据时,既可用折半查找,也可用顺序查找,但前者比后者的查找速度()。

数据结构_第9章_查找2-二叉树和平衡二叉树

数据结构_第9章_查找2-二叉树和平衡二叉树

F
PS
C
PR
CL Q
QL SL S SL
10
3
18
2
6 12
6 删除10
3
18
2
4 12
4
15
15
三、二叉排序树的查找分析
1) 二叉排序树上查找某关键字等于给定值的结点过程,其实 就是走了一条从根到该结点的路径。 比较的关键字次数=此结点的层次数; 最多的比较次数=树的深度(或高度),即 log2 n+1
-0 1 24
0 37
0 37
-0 1
需要RL平衡旋转 (绕C先顺后逆)
24
0
-012
13
3573
0
01
37
90
0 53 0 53
0 90
作业
已知如下所示长度为12的表:
(Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec)
(1) 试按表中元素的顺序依次插入一棵初始为空的二叉 排序树,画出插入完成之后的二叉排序树,并求其在 等概率的情况下查找成功的平均查找长度。
2) 一棵二叉排序树的平均查找长度为:
n i1
ASL 1
ni Ci
m
其中:
ni 是每层结点个数; Ci 是结点所在层次数; m 为树深。
最坏情况:即插入的n个元素从一开始就有序, ——变成单支树的形态!
此时树的深度为n ; ASL= (n+1)/2 此时查找效率与顺序查找情况相同。
最好情况:即:与折半查找中的判ห้องสมุดไป่ตู้树相同(形态比较均衡) 树的深度为:log 2n +1 ; ASL=log 2(n+1) –1 ;与折半查找相同。

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构( C语言版)(第 2版)课后习题答案李冬梅2015.3目录第 1 章绪论 (1)第 2 章线性表 (5)第 3 章栈和队列 (13)第 4 章串、数组和广义表 (26)第 5 章树和二叉树 (33)第 6 章图 (43)第 7 章查找 (54)第 8 章排序 (65)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。

如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

在有些情况下,数据元素也称为元素、结点、记录等。

数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

例如:整数数据对象是集合N={0 ,± 1,± 2,, } ,字母字符数据对象是集合C={‘A’,‘B’, , ,‘Z’,‘ a’,‘ b’, , ,‘z ’} ,学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

存储结构:数据对象在计算机中的存储表示,也称为物理结构。

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

(NEW)李春葆《数据结构教程》(C++语言描述)配套题库【名校考研真题+课后习题+章节题库+模拟试题】

(NEW)李春葆《数据结构教程》(C++语言描述)配套题库【名校考研真题+课后习题+章节题库+模拟试题】
A.DIV R0,R1;(R0)/(R1)→R0 B.INT n;产生软中断 C.NOT R0;寄存器R0的内容取非 D.MOV R0,addr;把地址处的内存数据放入寄存器R0中 【答案】C 【解析】A项,除法操作出现除数为零的情况时,会产生内中断, CPU切换为内核态进行中断处理;B项,直接产生中断,会切换到内核 态;D项,addr出现非法地址,会出现中断,进而切换到内核态。
D.1用C语言写的某单位的认识管理程序语言,2操作系统,3编译
程序 【答案】B 【解析】计算机系统的组成如下图所示:
其中,C语言写的某单位的认识管理程序语言属于应用程序,编译 程序属于语言处理程序。
3 假定下列指令已装入指令寄存器。则执行时不可能导致CPU从 用户态变为内核态(系统态)的是( )。[2015年联考真题]
5 下列说法中( )不是创建进程必须的。[上海交通大学考研真 题]
A.建立一个进程的进程表项 B.为进程分配内存 C.为进程分配CPU D.将进程表项放入就绪队列 【答案】C 【解析】进程刚被创建后,实际上是处于就绪状态的,所以不许为 进程分配CPU。
6 若系统S1采用死锁避免方法,S2采用死锁检测方法,下列叙述 中正确的是( )。[2015年联考真题]
4 下列选项中会导致进程从执行态变为就绪态的事件是( )。 [2015年联考真题]
A.执行P(wait)操作 B.申请内存失败 C.启动I/0设备 D.被高优先级进程抢占 【答案】D 【解析】D项,被高优先级进程抢占,进程会由执行态变为就绪 态。ABC三项,程序由于缺少资源而由执行态转为阻塞态。
目录
第一部分 名校考研真题 一、选择题 二、综合应用题
第二部分 课后习题 第1章 绪 论 第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 第6章 树和二叉树 第7章 图 第8章 查 找 第9章 内排序 第10章 外排序 第11章 数据结构和STL
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
若k==r[mid].key,查找成功 若k<r[mid].key,则high=mid-1 若k>r[mid].key,则low=mid+1
重复上述操作,直至low>high时,查找失败
算法描述
int Search_Bin(SSTable ST,KeyType key){ low=1;high=ST.length; while(low<=high){ mid=(low+high)/2; if EQ(key,ST.elem[mid].key) return mid; else if LT(key,ST.elem[mid].key) high=mid -1; else low=mid +1 ; }
3 分块查找(索引顺序表的查找)
查找过程:将表分成几块,块内无序,块间有序; 先确定待查记录所在块,再在块内查找 适用条件:分块有序表 算法实现
用数组存放待查记录,每个数据元素至少含有关键字域 建立索引表,每个索引表结点含有最大关键字域和指 向本块第一个结点的指针
例:p225 最大关键字
BiTree SearchBST(BiTree T,KeyType 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
左、右子树本身又都是一棵二叉排序树。
判定是否是二叉排序树
45
30 60
20
10 23 25
50 30 80
cao
90
40
35 66 85
wang ding zhao
56
74
88
1 二叉排序树的查找:p228
若二叉排序树为空,则查找不成功; 否则 1)若给定值等于根结点的关键字,则查找成功; 2)若给定值小于根结点的关键字,则继续在左子树上进行查找;
low mid high 6 7 8 9 56 64 75 80 low high 7 mid 8 9 64 75 80
10 88
11 92
1 5
2 13
3 19
4 21
5 37
6 56
10 88
11 92
high low
找21
1 5 low
1 5
2 13
3 19
4 21
5 37
6 56
mid
7 64
查找方法比较 顺序查找 ASL(平均查找长度)最大 表结构 存储结构 折半查找 最小 分块查找 两者之间 分块有序表
有序表、无序表 有序表 顺序存储结构 线性链表
顺序存储结构 顺序存储结构 线性链表
练习:
已知N元整型数组a存放N个学生的成绩,已按由大到小排序,以下 算法是用对分(折半)查找方法统计成绩大于或等于X分的学生人数,请 填空使之完善。 #define N /*学生人数*/ int uprx(int a[N],int x ) /*函数返回大于等于X分的学生人数*/ { int head=1,mid,rear=N; do { mid=(head+rear)/2; if(x<=a[mid]) __(1)__ else __(2)__; }while(__(3)__);
第九章 查找
查找的概念 静态查找表 动态查找表 哈希表
查找的概念 查找——也叫检索,是根据给定的某个值,在表 中确定一个关键字等于给定值的记录或数据元素 关键字——是数据元素中某个数据项的值,它可 以标识一个数据元素 对含有n个记录的表, ASL p c 查找方法评价
n i 1 i i n 查找速度 其中:pi 为查找表中第 个元素的概率, pi 1 i i 1 占用存储空间多少 ci 为找到表中第 个元素所需比较次数 i 算法本身复杂程度 平均查找长度ASL(Average Search Length):为确定 记录在表中的位置,需和给定值进行比较的关键字的 个数的期望值叫查找算法的~
1 二叉排序树的查找:p228
50 30 80
20
35 32
40
85
90
88
在二叉排序树中查找关键字值等于50,35,90,95
BiTree SearchBST(BiTree T,KeyType 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
动态查找表
二叉排序树定义(Binary Sorting Tree)
它或者是一棵空树,或者是一棵具有如下特征的非空二叉树: 若 它 的 左 子 树 非 空 , 则 左 子 树 上 所 有 结 点 的 关 键 字 均 小于根结点的关键字; 若 它 的 右 子 树 非 空 , 则 右 子 树 上 所 有 结 点 的 关 键 字 均 大于等于根结点的关键字;
1
2 3 … j
结点数为 结点数为1
结点数为2
结点数为4
j 1
……
……
……
结点总数
……
2
当n值较大时(n>50),有 次近似结果)
设表长n 2 h 1, h log2 (n 1),即判定树是深度为 的满二叉树 h 设表中每个记录的查找 概率相等pi
n
1 n
1 n 1 h n 1 则:ASL pi ci ci j 2 j 1 log2 (n 1) 1 log2 (n 1) 1 n i 1 n j 1 n i 1
索引表
22 1 48 7 86 13 查38
起始地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 22 12 13 8 9 20 33 42 44 38 24 48 60 58 74 57 86 53
分块查找方法评价
ASLbs Lb Lw 其中:Lb — —查找索引表确定所在 块的平均查找长度 Lw — —在块中查找元素的平 均查找长度 若将表长为n的表平均分成 块,每块含s个记录,并设表中每个 b 记录的 查找概率相等,则: 1 b 1 s b 1 s 1 1 n (1)用顺序查找确定所在块 ASLbs j i : ( s) 1 b j 1 s i 1 2 2 2 s n s (2)用折半查找确定所在块 ASLbs log2 ( 1) : s 2
if (a[head]<x) return head-1; return head; } (2)rear=mid-1 (1)head=mid+1 (3)head>rear
思考: 编写对有序表进行顺序查找的算法。假设每次查找时的给定值为随机 值,又查找成功和不成功的概率也相等,试求进行每一次查找时和给定值 进行比较的关键字个数的期望值。
mid 3 4 19 21
high 5 6 37 56
7 64
8 75
9 80
10 88
11 92 6
low mid high
判定树:
3
1 描述折半查找过程的判定树及查找21的过程 2 4 5 7
9
10 8 11
算法评价
判定树:描述查找过程的二叉树叫~ 有n个结点的判定树的深度为log2n+1 折半查找法在查找过程中进行的比较次数最多不超过 其判定树的深度 折半查找的ASL p221
2 二叉排序树的插入和删除
二叉排序树是一种动态树表,其特点是:
30 80 树的结构通常不是一次生成的,而是在查找过程中, 20 40 90 当树中不存在关键字等于给定值的结点时再进行插入。 35 85 88 50
插入操作的规则是:
32
(1)若二叉排序树为空,则插入结点应为新的根结点; (2)否则插入结点成为一个新添加的叶子结点,并且是 查找不成功时查找路径上访问的最后一个结点的左 孩子或右孩子结点。
比较次数=5
顺序查找方法的ASL
对含有n个记录的表, ASL pi ci
i 1 n
1 n n 1 n 1 n(n 1) n 1 则ASL pi ci (n 1 - i) n i 1 n 2 2 i 1 设表中每个元素的查找 概率相等pi
对查找概率不等的查找表,先对查找概率进行排序 优点:算法简单,适用面广 缺点:平均查找长度较大。
1 5
2 13
3 19
4 21
5 37
6 56
mid high 8 9 10 11 75 80 88 92
若 k==r[mid] .key,查 找成功 若 k<r[mid]. key,则 high=mid1 若 k>r[mid]. key,则 low=mid+ 1
1 5
2 13
3 19
4 21
5 37
int Search(rectype R[],int n,K) // 在具有n个元素的有序表R中,顺序查找值为K的结点,查找成功返回其位置, //否则返回-1表示失败 {i=0; while(i<n) {if(R[i]==K) return (i); else if(R[i]>K) return (-1); i++; }//while return (-1); }//结束search 在等概率情况下,则查找成功的平均查找长度为(n+1)/2,查找失败的平均查 找长度为(n+2)/2(失败位置除小于每一个,还存在大于最后一个)。若查找 成功和不成功的概率也相等,则查找成功时和关键字比较的个数的期望值约为 (n+1)/4。
相关文档
最新文档