高等教育之数据结构基础知识大全.doc_第1页
高等教育之数据结构基础知识大全.doc_第2页
高等教育之数据结构基础知识大全.doc_第3页
高等教育之数据结构基础知识大全.doc_第4页
高等教育之数据结构基础知识大全.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* * 名词解释 1、数据:是信息的载体,能够被计算机识别、存储和加工处理。 * 2、数据元素:是数据的基本单位,也称为元素、结点、顶点、记录。一个数据元素可以由若干个数据项组成,数据项是具有独立含义的最小标识单位。 * 3、数据结构:指的是数据及数据之间的相互关系,即数据的组织形式,它包括数据的逻辑结构、数据的存储结构和数据的运算三个方面的内容。 * 4、数据的逻辑结构:指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 * 5、数据的存储结构:指数据元素及其关系在计算机存储器内的表示。是数据的逻辑结构用计算机语言的实现,是依赖于计算机语言的。 * 6、线性结构:其逻辑特征为,若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且其余每个结点只有一个直接前趋和一个直接后继。 * 7、非线性结构:其逻辑特征为一个结点可能有多个直接前趋和直接后继。 * 8、算法:是任意一个良定义的计算过程,它以一个或多个值作为输入,并产生一个或多个值作为输出;即一个算法是一系列将输入转换为输出的计算步骤。 * 9、算法的时间复杂度T(n):是该算法的时间耗费,它是该算法所求解问题规模n趋向无穷大时,我们把时间复杂度T(n)的数量级(阶)称为算法的渐近时间复杂度。 * 10、最坏和平均时间复杂度:由于算法中语句的频度不仅与问题规模n有关,还与输入实例等因素有关;这时可用最坏情况下时间复杂度作为算法的时间复杂度。而平均时间复杂度是指所有的输入实例均以等概率出现的情况下,算法的期望运行时间。 * 11、数据的运算:指对数据施加的操作。数据的运算是定义在数据的逻辑结构上的,而实现是要在存储结构上进行。 * 12、线性表:由n(n0)个结点组成的有限序列。其逻辑特征反映了结点间一对一的关系(一个结点对应一个直接后继,除终端结点外;或一个结点对应一个直接前趋,除开始结点外),这是一种线性结构。 * 13、顺序表:顺序存储的线性表,它是一种随机存取结构。通过将相邻结点存放在相邻物理位置上来反映结点间逻辑关系。 * 14、单链表:每个结点有两个域:一个值域data;另一个指针域next,用来指向该结点的直接后继结点。头指针是它的充分必要的信息。单链表是一种单向的结构。 * 15、双链表:每个结点中增加了一个prior,用来指向该点的直接前趋结点。它是一种双向、对称的结构。 * 16、循环链表:是一种首尾相接的链表。单循环链表形成一个next链环,而双循环链表形成next链环和prior链环。 * 17、存储密度:是指结点数据本身所占的存储量和整个结点结构所占的存储量之比。顺序表的存储密度为1,而链表的存储密度小于1。 * 18、栈:只允许在一端进行插入、删除运算的线性表,称为“栈”(stack)。 * 19、LIFO表:即后进先出表,修改操作按后进先出的原则进行。譬如栈就是一种LIFO表。 * 20、顺序栈:采用顺序存储结构的栈,称为顺序栈。 * 21、链栈:采用链式存储结构的栈,称为链栈。 * 22、队列:只允许在一端进行插入、另一端进行删除运算的线性表,称为“队列”(queue)。 * 23、FIFO表:即先进先出表。譬如队列就是一种FIFO表。 * 24、顺序队列:采用顺序存储结构的队列,称为顺序队列。 * 25、循环队列:为克服顺序队列中假上溢现象,将向量空间想象为一个首尾相接的圆环,这种向量称为循环向量,存储在其中的队列称为循环队列。 * 26、链队列:采用链式存储结构的队列,称为链队列。 * 27、字符串:由零个或多个字符组成的有限序列,一般高为S=“a1,a2, an”。 * 28、空白串:由一个或多个空格组成的串称为空白串。 * 29、空串:长度为零的串称为空串,它不包括任何字符。 * 30、顺序串:串的顺序存储结构简称的为顺序串。 * 31、链式串:串的链式存储结构简称为链式串。 * 32、模式匹配:子串的定位运算又称为串的模式匹配。 * 33、对称矩阵:元素满足aij=aji(0i,jn)的矩阵。 * 34、三角矩阵:主对角线以上或以下的元素(不包括对角线)均为常数的矩阵。 * 35、带状矩阵:所有非零元素均集中在以主对角线为中心的带状区域的矩阵。 * 36、稀疏矩阵:非零元素远远少于矩阵元素的矩阵。 * 37、广义表:有n个元素a1,a2an组成的有限序列,其中n可以是原子或一个广义表。 * 38、三元组表:若线性表顺序存储的每一个结点均是三元组,那么该线性表的存储结构称为三元组表。 * 39、行表:记录稀疏矩阵中每行非零元素在三元组表中的起始位置的表称为行表。 * 40、内部排序:假设给定含有n个记录(R1,R2,Rn)的文件,其相应的关键字为(K1,K2,,Kn),则排序是确定一个排列(P(1),P(2),P(n)),使得(Kp(1)Kp(2)Kp(n)),从而得到有序文件(R * p(1), R p(2),R p(n))。整个排序过程都在内存中进行的排序即为内部排序。 * 41、稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字在用某种排序法排序后,若这些相同关键字的元素的相对次序仍然保持不变,则这处排序方法是稳定的。 * 42、就地排序:若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),则称为就地排序。 * 43、堆:n个关键字序列K1,K2,,Kn,称为堆,当且仅当序列满足如下性质:KiK2i,且KiK2i1或KiK2i,且KiK2i1。 * 44、查找:即给定一个值K,在含有n个结点的表中找出关键字等于给定值K的结点。 * 45、动态查找表:若在查找的同时对表做修改操作(如插入和删除),则相应的表称之为动态查找表。 * 46、静态查找表:若在查找的同时不对表做修改操作(如插入和删除),则相应的表称之为静态查找表。 * 47、内查找:若整个查找过程都在内存中进行,则称之为内查找。 * 48、外查找:若查找过程中需要访问外存,则称之为内查找。 * 49、平均查找长度:ASLpici,其中n是结点的个数;pi是查找第i个结点的概率;ci是找到第i个结点所需要进行的比较次数。 * 50、散列函数:在关键字和表地址之间建立的对应关系h称为散列函数。 * 51、冲突:两个不同的关键字,其散列函数值相同,因而被映射到同一个表位置上的现象称为冲突。 * 52、同义词:发生冲突的两个关键字称为该散列函数的同义词。 * 53、装填因子:设m和n分别表示表长和表中填入的结点数,则将=n/m定义为散列表的装填因子。 * 二、填空 * 1、数据的存储结构可用四种基本的存储方法表示,它们分别是顺序存储方法、链接、索引、散列。 2、数据的运算最常用的有五种,检索、插入、删除、更新、排序。 * 3、一个算法的效率可分为时间和空间效率。 4、数据结构按逻辑结构可分为线性结构和非线性结构。线性结构反映结点间的逻辑关系是一对一的,非线性是多对多的。 * 5、顺序表相对于链表的优点有节省存储和随机存储。 6、链表相对于顺序表的优点有插入和删除操作方便。 * 7、按顺序存储方法存储的线性表称为顺序表,按链式存储方法存储的线性表称为链表。 8、线性表中结点的集合是有限的,结点间的关系是一对一的。 * 9、在n个结点的顺序表中插入(删除)一个结点需平均移动n/2((n-1)/2)个结点,具体的移动次数取决于表长n和插入(删除)位置i。 * 10、在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。 * 11、在民个结点的单链表中要删除已知结点*p,需找到它的直接前趋结点的地址,其时间复杂度为O(n)。 * 12、在双链有中要删除已知结点*p,其时间复杂度为O(1)。 * 13、在单链表中要在已知结点*p之前插入一新结点,仍需找到*p的直接前趋结点的地址,其时间复杂度为O(n);而在双链表中,完成同样操作其时间复杂庶O(1)。 * 14、在循环链表中,可根据在一结点的地址遍历整个链表,而单链表中需知道头指针才能遍历链表。 15、在栈中存取数据遵从后进先出的原则,队列中则是先进先出。 * 16、栈结构中,允许插入、删除的一端称为栈顶,另一瑞称为栈底;在队列中,允许插入的称为队尾,允许删除的一端称为队首。 * 17、在有n个元素的栈中,进栈和退栈操作的复杂度为O(1) 和O(1)。 * 18、设长度为n的链队列用单循环链表示,若只设头指针,则入队和出队操作的时间复杂度分别为O(n)和 O(1);若只设尾指针,则O(1) 和O(1)。 * 19、通常在程序中使用串可分为串变量和串常量;而串按存储方式又可分为顺序串和链式串。 20、链式存储与顺序存储的相互串匹配算法的效率相同。 * 21、成功匹配的起始位置称为有效位移,所有匹配不成功称为无效位移;NaivestrMatch返回的是第1个有效位移。 * 22、串的朴素匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)m,n为主串长,m为子串长。 * 23、对于数组Anm,其元素aij按行优先与列优先存储的地址之差为(i-1)(n-1)-(j-1)(m-1).(两次存储的LOC(a11)相同.) * 24、特殊矩阵是指非零或零元素分布有一定规律的矩阵。 25、多维数组的存储方式有顺序和链式。 26、递归表是指允许递归的广义表,纯表是指与树对应的广义表。 * 27、任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可是广义表而表尾必定是广义表。 * 28、表的长度是指广义表元素的个数,表的深度是指广义表展开后扩号的层数。 29、树中结点的最大层次称为树的深度(高度)。 * 30、若有一棵二叉排序树,则按照中序遍历顺序将产生一个有序序列。 31、由一棵二叉树的前序序列和中序可惟一确定这棵二叉树。 * 32、将一棵树转换成一棵二叉树后,二叉树的根结点没有右子树。 33、图有邻接矩阵、邻接表等存储结构,遍历图有深度优先(DFT)和广度优先(BFT)等方法。 * 34、有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的出度。 35、如果n个顶点的图是一个环,则它有n个生成树。 * 36、n个顶点e条边的图用邻接矩阵(邻接表)存储,则空间复杂度为O(n2)(O(n+e))。 37、稀疏(稠密)图G,采用邻接表(邻接矩阵)存储较省空间。 * 38、图的逆邻接表存储结构只适用于有向图。 39、已知一个图的邻接矩阵表示,删除所有从第i个顶点出发的边的方法是将邻接矩阵的第i行全置0、 * 40、n个顶点e条边的图用邻接矩阵(邻接表)存储,深度优先遍历的时间复杂度为O(n2)(O(n+e))。(广度优先时间复杂度同上。) * 41、图的BFS生成树的树高比DFS生成树的树高小或相等。 * 42、用Prim(Kruskal)算法求具有n个顶点e条边的图的最小生成树的时间复杂度为O(n2)(O(elog2e))。 * 43、稀疏(稠密)图G的最小生成树,最好用Kruskal(Prim)算法求解。 * 44、用迪杰斯特拉(Dijkstra)算法求n个顶点e条边的图中的某一顶点到其余各顶点间最短路径的时间复杂度为O(n2)。 * 45、用Dijkstra算法求某一顶点到其余各顶点间最短路径是按路径长度递增的次序来得到最短路径的。 * 46、拓扑排序算法是通过重复选择具有0个前趋顶点的过程来完成的。 47、拓扑排序输出的顶点数小于有向的顶点数,刚该图一定存在环。 * 48、对n个顶点e条边的图进行拓扑排序,算法的时间复杂度为O(n+e)。 * 49、在插入和选择排序中,若初始数据基本正序,则选用插入;若初始反序,则选用选择。 * 50、在堆排序和快速排序中,初始记录接近正序或反序,则用堆,初始无序则用快速。 * 51、在堆、快速和归并排序中,只考虑存储空间,先选堆,其次快速,最后并归;只从排序结果的稳定性考虑,则先并归;只从平均情况下最快考虑,先选快速;只从最坏考虑并要节省内在,则先堆。 * 52、大多数排序算法都有两个基本操作:比较两上关键字的大小和改变指向记录的指针或移动记录本身。 * 53、散列法存储的基本思想是由关键字的值决定数据的存储地址。 54、散列表的查找效率主要取决于散列表造表是时选取的散列函数和处理的方法。 * 55、当所有结点的权值都相等时,用这些结点构造的二叉树的特点是只有右子树。 56、m阶B-树每一个结点的子树都小于或等于m. * 57、m阶B-树具有k个子树的非叶子结点含有k1个关键字。 58、m阶B-树的任何一个结点的左右子树的高度都相等。 * 59、中序遍历二叉树排序树的结点就可以得到排好序的结点序列。 60、对两棵具有相同关键字集合而形状不同的二叉排序树,中序遍历它们得到的序列的顺序是一样的。 * 61、B和B树都旨在建立起文件中全部记录的索引,以便随访问。在B树中记录地址存于它的关键码所在的结点中;在B树中记录地址存于叶结点中各关键码之下。 * 62、在各种查找方法中,平均查找长度与结点个数n无关的查找方法是散列查找。 * 63、对于长度为n的线性表,若进行顺序查找,则时间复杂度为O(n);若采用折半查找,则O(log2n);若用分块查找则O(sprt(n)。 * 64、在散列存储中,装填因子的值越大,则存取元素时发生冲突的可能性越大。反之则越小。 * 65、假设在有序线生表a20上进行二分查找,则比较一次查找的结点数为1;比较两次查找成功的结点数为2;比较四次查找成功的结点数为8;平均查找长度为3.7. * 66、在文件中,能唯一标识记录的数据项,称为主关键字,否则称为次关键字。 67、文件有四种基本的组织方式:顺序、索引、散列和链组织。 * 68、文件有四种常用的组织:顺序、索引、散列和多关键字文件。 69、评价一个文件组织的效率从两方面考察:执行文件所花费的时间和文件组织所需的存储空间。 * 70、衡量文件操作质量的重要标志是检索功能的多少和速度的快慢。 71、索引文件由索引表和主文件组成。在存储器上分两个区:索引区和数据区。 * 72、在索引非顺序文件中采用动态索引时,为减少访问外存的次数,应尽量缩减索引表的深度。 * 73、在索引文件中,评价外存索引表的查找性能,主要看访问外存的次数,即索引表的深度。 * 74、常用的索引顺序文件有ISAM(索引顺序存取法)和VSAM(虚拟存储存取方法)。 * 75、ISAM是一种专为磁盘存取文件设计的文件组织方式,采用静态索引结构。由多级主索引、柱面索引、磁道索引和主文件组成。 * 76、VSAM是一种索引顺序文件的组织方式,采用B+树作为动态索引结构。由索引集、顺序集和数据集组成。 * 77、多重表文件是将索引方法和链接方法结合的一种组织方式。 * 78、在双链表中,存储一个结点有三个域,一个数据域;另两个是指针域,分别指向该结点的直接后继和直接前趋。 * 79、对于一棵满二叉树,若有m个叶子,则结点数为2m-1;若满二叉树的结点数为n,则其高度为log2(n+1). * 80、森林的后序遍历序列正是相应二叉树的中序遍历序列,森林的先序遍历序列正是相应二叉树的先序遍历序列。 * 81、在一棵具有n个结点的完全二叉树中,从树根起,自上而下、自左至右地给所有结点编号。设根结点编号为1。若编号为i的结点,有左孩子,那么其右孩子的编号为2i1;若编号为i的结点,有父结点,那么其父结点编号为i/2. * 82、采用折半查找法进行查找的数据文件应为有序表和顺序存储结构。 83、线性表按存储方式的不同,可分为顺序表、链表和散列表三种。 * 84、在有n个结点的二叉链表中,空指针域有n+1个,利用这些空指针域,存放指向结点在中序次序下的前趋或后继的指针,这种附加的指针称为线索。 * 85、由一棵二叉树的前序序列和中序序列可确定一棵二叉树。 * 86、在含胡n个结点的二叉排序树上查找某结点时,其平均查找长度ASL的范围估计是从log2n至(n+1)/2. * 87、顺序表的存储密度为1,而链表的存储密度小于1. * 88、在上三角矩阵中,它的下三角(不包括对角线)中的元素均为常数C。上三角矩阵中的重复元素C可共享一个存储空间,其余的元素正好有n(n+1)/2个。 * 89、对于一棵有n个结点的4度树,每个结点中有4个指针,指向子结点,则树中指向子结点的指针有n-1个,空指针有3n+1个。 * 三、简答题 * 1、简述线性结构与非线性结构的不同点。 * 答:线性结构的逻辑特征是除开始结点和终端结点外,其余每个结点只有一个直接前趋和一个直接后继,即结点间存在一对一的关系; * 而非线性结构的逻辑特征是一个结点可以有多个直接前趋和直接后继,即结点间存在多对多的关系。 * 2、简述数据的存储四种常用存储方法 * 答:顺序存储方法:把逻辑上相邻的结点存储在物理位置相邻的存储单元里,这样结点间的逻辑关系由存储单元的邻接关系来体现。 * 链接存储方法:除存储结点外,还要由附加的指针字段来表示结点间的逻辑关系。 * 索引存储方法:在存储结点的同时,还建立附加的索引表。 * 散列存储方法:根据结点的关键字直接计算出该结点的存储地址。 * 3、简述稠密索引与稀疏索引的不同点 答:稠密索引:每个结点在索引表中都有一个索引项。 * 稀疏索引:一组结点在索引表中只对应一个索引项。 * 4、简述算法复杂度(效率分析)的评价方法。 * 答:算法复杂度可分为时间复杂度和空间复杂度。时间复杂度是该算法所破费的时间,可用该算法中所有语句的频度之和来计算。 * 由于评价一个算法的时间性能时,主要标准是算法时间复杂度的数量级,即算的渐近时间复杂度,它一般是算法中频度最大的语句的频度的数量级。 * 空间复杂度是该算法所耗费的存储空间,也是总是规模n的函数,同样用渐近空间复杂度作为空间复杂度。 * 5、简述线性表的存储结构及各自的长处。 * 答:线性表的两种存储结构:顺序存储结构顺序表、链式存储结构链表。 * 顺序表用结点物理位置的相邻性来反映结点间的逻辑关系,其优点是:节省存储,随机存取,当表长变化较小,主要操作是进行查找,宜采用顺序表。 * 链表用附加的指针来反映结点间经,当表长变化较大,主要操作是进行插入和删除,宜采用链表。 * 6、简述头指针、头结点的作用。 * 答:头指针指向链表的“第一个结点”(头结点,或无头结点时的开始结点)。头结点不是线性表中的结点,是在链表中虚设的一个结点。 * 设置头结点有两个好处:无需对链表中第一个位置上的操作进行特殊处理,对空表和非空表的处理可以统一起来。 * 7、为什么在单循环链表中设置尾指针比设置头指针更好? * 答:由于对表的操作常常在表的两端进行,所以对单循环链表,当知道尾指针rear后,其另一端的头指针是rearnextnext(表中带头结点)。这将给操作带来很多方便。 * 8、线性表、栈、队列有异同? * 答:栈和队列是受限的线性表,对插入、删除运算加以限制。 * 栈是只允许在一端进行插入、删除运算,因而是后进先出表; * 而队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表。 * 9、在顺序栈中简述进栈、退栈操作的过程。 * 答:顺序栈的进栈、通栈操作均在栈顶进行,栈顶指针指向栈顶元素处。进栈时,栈顶指针先加1,再送值到栈顶指针指向处。退栈时,先从栈顶指针指向处取值,栈顶指针再减1. * 10、在队列中简述入队、出队操作的过程(用“少和一个元素空间”的方法)。 * 答:在循环队列中,设队头指针指向队头元素,队尾指针指向队尾元素后的一个空闲元素。 * 在队列不满时,可执行入队操作,此时先送值到队尾指针指向的空闲元素,队尾指针再加1(要取模)。 * 在队列不空时,可执行出队操作,此时先从队头指针指向处取值,队头指针再加1(要取模)。 * 11、在什么情况下,才能使用栈、队列等数据结构? * 答:栈结构主要应用在三方面:算术表达式的求值子程序的调用与返回递归函数的求值。 * 队列结构主要应用在需要“排除”的事件中,例如OS中的作业调度等。 * 12、试举例说明链式串在哪些操作上比顺序串有更高的效率。 * 答:链式存储在串的插入和删除操作上效率较高,因为它只需做查找工作,而不需移动后面的元素。 * 13、在执行某种排序算法的过程中,出现了排序码朝着最终排序序列相反的方向移动,从而认为该排序算法是稳定的,这种说法对吗?为什么? * 答:这种说法不对。因为排序的不稳定性是指排序前两个排序码相同的元素的相对次序经过排序后发生了变化,而题中未涉及到幸免于难 * 的相对次序(特别是相同排序码的元素)的改变,只有移动方向,所以这种说法不对。 * 14、选择排序算法是否稳定?为什么? * 答:选择排序不稳定。由于选择排序的原则是从剩余的记录中找最小(或最大)都并与第i个记录交换,一旦交换到某个位置以后再也不动了, * 这种算法就不能保证具有相同排序码的记录原来所具有的相对次序,即原来排在前面的经过后有可能排在某一个具有相同码的记录的后面。 * 例如排序码43,89,21,43,28,15,经过5遍排序后次序为15,21,28,43,43,89.排序前每一个位置上的排序码43现在位于第5个位置上。 * 15、在快速排序算法中,能否用队列代替栈来保存子文件首、尾记录的地址(下标)? * 答:保存子文件首、尾记录的地址(下标),其目的是为了处理某个子文件时,能知道其首、尾记录的地址(下标), * 这才能地该子文件进行快速排序(排序过程又可能出现新的子文件),但与处理子文件的先后没有什么关系,仅仅起存储作用,因此,用队列也可起到栈的作用,故可取而代之。 * 16、设有5000个无序的元素,希望用最快速度挑选出其中前10个最大的元素,在快速排序、堆排序、归并排序、基数排序和Shell排序中采用哪种方法最好?为什么? * 答:以上几种算法中,快速排序、归并排序、基数排序和Shell排序都是在排序结束后才能确定数据元素的全部顺序, * 而无法知道排序过程中部分元素的有序性。堆排序则每次输出一个最大(或最小)的元素,然后对堆进行调整,保证堆顶的元素总是余下元素中最大的(或最小)。 * 根据题意,只要选取前10个最大的元素,故采用堆排序方法是合适的。 * 17、将十进制的关键字用二进制表示,对基数排序所需的计算时间和附设空间分别有何影响?各是多少? * 答:因为基数排序所需的计算时间不仅与文件的大小n有关,还与关键字的位数、关键字基数有关。 * 设关键字的基数为r(十进制基数为10,二进制基数为2),为建立r个空队列所需的时间为O(r)。 * 把n个记录分放到各个人列中并重新收集起来所需的时间为O(n),因此一遍排序所需的时间复杂度为O(n+r)。 * 若每个关键字有d位,则总共要d遍排序,所以基数排序的时间复杂度为O(d(n+r)。由于关键字的位数d直接与基数r以及最大关键字的值有关,因此不同的r和关键字将需要不同的时间。 * 18、有n个不同的英文单词,它们的长度相等,均为m,若n50,m5,试问什么排序方法时间复杂性最佳?为什么? * 答:采用基数排序方法时间复杂性最佳。因为这里英文单词的长度相等,且英文单词是由26个字母组成,满足进行基数排序的条件, * 另外,依题意,mn,基数排序的时间复杂性由O(m(n+rm)变成O(n),因此时间复杂性最佳。 * 19、试述顺序查找法、折半查找法和分块查找法对被查找的表中元素的要求,并求其等概率时查找成功的平均查找长度。 * 答:顺序查找法:表中元素可以任意存放。查找成功的平均查找长度为(n+1)/2. * 折半查找:表中元素必须以关键字的值递增或递减地存放且只能以顺序表存放。查找成功的平均查找长度为2(n+1)-1。 * 分块查找:表中每块内的元素可以任意存放,但块与块之间必须按关键字的大小递增或递减在存放, * 即前一块仙所有元素的关键字不能大(或小)于后一块内任意一个元素的关键字。若用顺序查找确定所在块,平均查找长度为1/2(n/s+s)+1;若用折半查找确定所在块,平均查找长度为2(n/s+1)+s/2. * 20、假定散列函数可映射的地址空间的长度为1000,如果散列函数只是简单地抽取关键字中间的3位作为散列函数的映射地址,会出现什么问题? * 答:由于这种简单的抽取方法,使得关键字两端的数字在产生散列函数值时不起作用,只简单地依赖于中间的个别数字,这就增加了产生冲突的可能性,而这正是散列查找方法所不希望的。 * 21、假定有n个关键字,它们具有相同的散列函数值,用线性探测方法把这n个关键字存入到散列地址中间要做多少次探测? * 答:由于线性探测的查找次数主要取决于装填因子,即与散列地址地占用情况有关。假定初始时散列地址为空, * 则在此情况下连续装入n个具有相同的散列函数值的关键字所需的总探测次数为12n=n(n+1)/2。 * 22、已知一个含有100个记录的表,关键字为中国姓氏的拼音。请给出此表的一个散列表设计方案,要求它在等概率情况下查找成功的平均查找长度不超过3. * 答:散列查找的主要取决于处理冲突的方法,而且直接与散列表的装填因子有关。越小,表中的记录数越小或表越长, * 发生冲突的可能性就越小,查找效率也越高;反之,越大,表中的记录密度越高,发生冲突的可能性就越大,查找时间也越长。 * 若采用二次探测再散列,这样在等概率情况下查找成功的平均查找长度为Sn-1/(1-),根据题目要求有-1/(1-)3,即-(1-)3, * 可求得0.8.因为0.8,表中含有100个记录,由此可推得散列表长为100/0.8125.根据关键字的特性和表的长度选取合适的散列函数,例如随机数法。 * 通常当关键字长度不等时采用此法构造散列函数较恰当。 * 23、DB中研究的文件与OS中研究的文件有什么区别? * 答:OS中研究的文件是一维的无结构连续字符序列(即“流式文件”)。DB中研究的文件是带有结构的记录集合,每个记录可由若干个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论