二、填空题。(每空1分,共10分)(1)数据结构是一门研究非数值计算的程序设计问题中计算机的数据以及它们之间的关系和运算等的学科.(2)数据结构包括数据的________逻辑结构结构和物理结构________结构。(3)数据结构从逻辑上划分为三种基本类型:____线性数据结构_______、____树型结构______和_____图结构______。(4)数据的物理结构被分为___顺序存储[1]______、___链式存储[2]_____、____索引存储[3]______和______散列表(Hash)存储_____四种。(5)一种抽象数据类型[4]包括_____变量的取值范围_____和____操作的类别_____两个部分。(6)数据的逻辑结构是指数据元素间的逻辑关系,数据的存储结构是指数据元素存储方式或者数据元素的物理关系。(7)数据结构是指数据及其相互之间的____关系__________.当结点[5]之间存在M对N(M:N)的联系时,称这种结构为________网状结构________。当结点之间存在1对N(1:N)的联系时,称这种结构为_____树结构__________。(8)对算法从时间和空间两方面进行度量,分别称为空间复杂度和时间复杂度分析。(9)算法的效率可分为______空间_________效率和______时间_________效率.(10) for(i=1,t=1,s=0;i(11)线性表[6]是n个元素的_________有限序列____________________。(12)线性表的存储结构有_________顺序存储和链式存储____________________。(13)设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为_____O(n)______,在链式存储结构上实现顺序查找的平均时间复杂度为____O(n)_______.(14)设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中___n-i+1____个数据元素;删除第i个位置上的数据元素需要移动表中___n—i____个元素.(15)若频繁地对线性表进行插入与删除操作,该线性表应采用_____链式_________存储结构.(16)链式存储结构中的结点包含______数据__________域和_____指针__________域。(17)对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为___Ο(1)______,在表尾插入元素的时间复杂度为_____Ο(n)_______。(18)栈的插入和删除只能在栈的栈顶[7]进行,后进栈的元素必定先出栈,所以又把栈称为____FILO________表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为 _____FIFO______表。(19)s=” I am a man” 长度为____10_______ 。(20)s1=”hello “,s2="boy”,s1,s2连接后为:________hello boy______________ 。(21)s=”this is the main string”,sub=”string”,strindex(s,sub)是:_______13_______。(22)int a[10][10],已知a=1000,sizeof(int)=2,求a[3][3]地址:_______1066___________ .(23)设有两个串p和q,求q在p中首次出现的位置的运算称为________模式匹配[8]________.(24)在树型结构中,树根结点没有______前趋______结点,其余每个结点有且仅有______一______个前驱结点;树叶结点没有______后继______结点,其余每个结点的______后继______结点数不受限制。(25)在一棵二叉树[9]中,度为0的结点的个数为n0,度为2的结点的个数为n2,则:n0 =______n2 +1______.(26)由分别带权为3,9,6,2,5的共五个叶子结点构成一棵哈夫曼树[10],则带权路径长度为______55______。(27)在图G的邻接表[11]表示中,每个顶点邻接表中所含的结点数,对于无向图[12]来说等于该顶点的______度数______,对于有向图[13]来说等于该顶点的______出度[14]数______。(28)假定一个图具有n个顶点和e条边,则采用邻接矩阵[15]表示的空间复杂性为______O(n2 )______,采用邻接表表示的空间复杂性为______O(n+e)______。(29)对于长度为n的线性表,若进行顺序查找,则时间复杂度为______O(n)____;若采用折半法查找,则时间复杂度为______O(log2n)____。(30)假设在有序线性表A[1..20]上进行折半查找,则比较一次查找成功的结点数为____1_______,则比较二次查找成功的结点数为____2_______,则比较三次查找成功的结点数为____4_______,则比较四次查找成功的结点数为_____8______,则比较五次查找成功的结点数为____5_______,平均查找长度[16]为_____log2(n+1)-1______.(31)在一棵二叉排序树中,每个分支结点[17]的左子树上所有结点的值一定_____小于______该结点的值,右子树上所有结点的值一定____大于_______该结点的值.(32)对一棵二叉排序树进行中序遍历[18]时,得到的结点序列是一个_______增序序列_______________。(33)对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K %7作为散列函数,则散列地址[19]为0的元素是_____70_________,散列地址为6的是____34,20,55_________。(34)在线性表的散列存储中,装填因子a又称为装填系数,若用m表示散列表的长度,n表示待散列存储的元素的个数,则a等于____n/m_______。(35)散列表中解决冲突的两种方法是____开放地址法_________和____链地址法_________。(36)在散列存储中,装填因子a的值越大,则_______产生冲突的可能性就越大____________;a的值越小,则_____产生冲突的可能性就越小___________.(37)散列法存储的基本思想是由________关键码直接______________决定数据的存储地址.(38)构造哈希函数[20]的方法有(写二个)______________直接定址法,数字分析法,平方取中法,折叠法,除留余数法,随机数法_________________________________________。(39)在分块查找中首先查找 _____索引________,然后再查找相应的______块_________。(40)散列表的查找效率主要取决于散列表造表时选择的_____哈希函数________ 和______装填因子_________。(41)对两棵具有相同关键字集合而形状不同的二叉排序树,____中序_______ 遍历它们得到的序列的顺序是一样的。(42)当待排序的记录数较大,排序码较随机且对稳定性不作要求时,宜采用______快速_________排序;当待排序的记录数较大,存储空间允许且要求排序是稳定时,宜采用______归并_________排序。(43)在堆排序[21]的过程中,对任一分支结点进行筛运算的时间复杂度为___O(log2n)_____,整个堆排序过程的时间复杂度为____O(nlog2n)____。(44)当向一个大根堆插入一个具有最大值的元素时,需要逐层____向上_____调整,直到被调整到_____根结点_______位置为止。(45)对一组初始关键字序列(40,50,95,20,15,70,60,45,10)进行冒泡排序[22],则第一趟需要进行相邻记录的比较的次数为____8______,在整个排序过程中最多需要进行_____8_____趟排序才可以完成。(46)在在插入排序[23]、选择排序[24]、快速排序[25]、堆排序、归并排序和基数排序中,平均比较次数最少的排序是___快速_______,需要内存容量最多的是____归并______.(47)堆排序是不稳定,空间复杂度为____O(1)_____。在最坏情况下,其时间复杂度也为___O(nlog2n)______。(48)若待排序的文件中存在多个关键字相同的记录,经过某种排序方法排序后,具有相同关键字的记录间的相对位置保持不变,则这种排序方法是____稳定_______的排序方法。(49)在对一组记录(50,40,95,20,15,70,60,45,80)进行直接插入排序时,当把第7个记录60插入到有序表[26]时,为寻找插入位置需比较____3_____次。(50)二路归并[27]排序的时间复杂度是___O(nlog2n)______。(51)对于n个记录的集合进行归并排序,所需的附加空间消耗是___O(n)______.(52)设表中元素的初始状态[28]是按键值递增的,分别用堆排序、快速排序、冒泡排序和归并排序方法对其仍按递增顺序进行排序,则______冒泡排序_________最省时间,____快速排序________最费时间。
题目解答
答案
解析
本题主要考查数据结构与算法的基础知识,涵盖数据结构的基本概念、逻辑与物理结构、线性表、栈队列、树、图、查找算法、排序算法等多个核心知识点。具体解析如下:
填空题答案详解
(1) 元素:数据结构研究非数值计算中数据的元素及关系,此处填“元素”。
(2) 逻辑;物理:数据结构的两大组成部分,题目已部分给出,补充完整。
(3) 线性结构;树形结构;图结构:逻辑结构的三种基本类型,题目已部分给出,补充完整。
(4) 顺序存储;链式存储;索引存储;散列存储:物理结构的四种主要类型,题目已部分给出,补充完整。
(5) 数据对象;操作集合:抽象数据类型的两部分定义(题目原答案可能笔误,正确应为“数据对象”和“操作集合”)。
(7) 关系;网状结构;树结构:数据结构的核心是数据间的关系;M:N联系为网状结构,1:N联系为树结构。
(9) 空间;时间:算法效率的两大度量维度。
(11) 有限序列:线性表的定义(题目原答案可能笔误,正确为“有限序列”)。
(12) 顺序存储;链式存储:线性表的两种主要存储结构。
(13) O(n);O(n):顺序存储和链式存储的顺序查找平均时间复杂度均为O(n)。
(14) n-i+1;n-i:顺序表插入时移动n-i+1个元素,删除时移动n-i个元素。
(15) 链式:链式存储支持快速插入删除,无需移动元素。
(16) 数据;指针:链式存储的结点两部分:数据域和指针域。
(17) O(1);O(n):单链表表头插入O(1),表尾插入需遍历到尾部,O(n)。
(18) FILO;FIFO:栈的后进先出(FILO),队列的先进先出(FIFO)。
(19) 10:字符串”I am a man”包含空格,长度为10(I(1) + (空格1)+am(2)+(空格1)+a(1)+(空格1)+man(3)=10)。
(20) hello boy:字符串连接s1+s2的结果。
(21) 13:substring”string”在s中的起始位置(从1开始计数:”this is the main string”中”string”从第13位开始)。
(22) 1066:二维数组a[10][10]按行存储,a[0][0]=1000,每个int占2字节,a[3][3]地址=1000 + 3102 + 32=1000+60+6=1066。
(23) 模式匹配:求子串在主串中首次出现位置的运算。
(24) 前驱;一;后继;后继:树结构中根无前辈,其余结点一个前驱;叶无后辈,其余后继数不限。
(25) n2+1:二叉树性质:n0=n2+1。
(26) 55:哈夫曼树构造:带权路径长度=33 + 23 +53 +62 +92=9+6+15+12+18=55。
(27) 度数;出度:无向图邻接表结点数=度数,有向图=出度。
(28) O(n²);O(n+e):邻接矩阵空间O(n²),邻接表O(n+e)。
(29) O(n);O(log₂n):顺序查找O(n),折半查找O(log₂n)。
(30) 1;2;4;8;5;log₂(n+1)-1:折半查找成功比较次数:第k次比较的结点数为2^(k-1),平均查找长度=log₂(n+1)-1。
(31) 小于;大于:二叉排序树性质:左子树<根<右子树。
(32) 增序序列:二叉排序树中序遍历得有序序列。
(33) 70;34,20,55:H(K)=K%7:70%7=0,34%7=6,20%7=6,55%7=6。
(34) n/m:装填因子α=元素数/表长。
(35) 开放地址法;链地址法:哈希冲突的两种主要解决方法。
(36) 冲突概率越大;冲突概率越小:装填因子与冲突概率正相关。
(37) 关键字:哈希存储的核心思想:关键字直接决定地址。
(38) 直接定址法;除留余数法:常见哈希函数构造方法(任选两种)。
(39) 索引;块:分块查找先查索引,再查块。
(40) 哈希函数;装填因子:哈希查找效率的两大影响因素。
(41) 中序:不同二叉排序树的中序遍历序列相同。
(42) 快速排序;归并排序:快速排序平均时间优,归并排序稳定且需额外空间。
(43) O(log₂n);O(nlog₂n):堆排序筛运算O(log₂n),总时间O(nlog₂n)。
(44) 向上;根结点:大根堆插入最大值需向上调整至根。
(45) 8;8:冒泡排序第一趟比较n-1=8次,最多n-1=8趟。
(46) 快速排序;归并排序:快速排序平均比较最少,归并排序需O(n)额外空间。
(47) O(1);O(nlog₂n):堆排序空间O(1),最坏时间O(nlog₂n)。
(48) 稳定:稳定排序的定义。
(49) 3:直接插入排序第7个记录60时,有序表为[15,20,40,50,60,70]?(原序列待确认,此处按常规计算比较3次)。
(50) O(nlog₂n):二路归并排序时间复杂度。
(51) O(n):归并排序需O(n)额外空间。
(52) 冒泡排序;快速排序:有序序列中冒泡排序最快(比较少),快速排序退化为O(n²)最慢。