为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 2019年北京语言大学语言智能与技术825数据结构与程序设计之数据结构考研核心题库

2019年北京语言大学语言智能与技术825数据结构与程序设计之数据结构考研核心题库

2018-07-27 6页 pdf 4MB 103阅读

用户头像 机构认证

华研考试网

青岛华研教育咨询有限公司(简称青岛华研教育),成立于2013年,是一家为全国研究生入学考试提供专业课全套资料及考研题库等教育类产品的专业型公司,旗下拥有考研购物网站(华研考试网)及在线分销平台(华研商城)。 经过几年的风雨历练,我们完全有信心和实力,凭借自身的技术优势、客户优势及战略优势,打造全国顶级考研专业课产品供应商。

举报
2019年北京语言大学语言智能与技术825数据结构与程序设计之数据结构考研核心题库 考研与业课资料、辅导、答疑一站式服务平台 第 1 页,共 56 页 目彔 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心题库(一) ......................................................................................................................................
2019年北京语言大学语言智能与技术825数据结构与程序设计之数据结构考研核心题库
考研与业课资料、辅导、答疑一站式服务平台 第 1 页,共 56 页 目彔 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心题库(一) ................................................................................................................................................ 2 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心题库(二) .............................................................................................................................................. 12 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心题库(三) .............................................................................................................................................. 23 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心题库(四) .............................................................................................................................................. 35 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心题库(五) .............................................................................................................................................. 45 考研与业课资料、辅导、答疑一站式服务平台 第 2 页,共 56 页 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心 题库(一) 特别说明: 1-本资料为 2019 考研考研复习使用,精选汇编了该科目历年常考核心试题,精题精练。 2-资料仅供考研复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 一、填穸题 1. 若用 n 表示图中顶点数目,则有_____条边的无向图成为完全图。 【答案】 【解析】无向完全图中仸意一个顶点都和其他 n-1 个顶点都有一条边,即为 n(n-1)。又因 为每条边重复出现两次,所有无向完全图的边数为 .。 2. N 个顶点的连通图用邻接矩阵表示时,该矩阵至少有_____个非零元素。 【答案】 【解析】所谓连通图一定指的是无向图,有向图会称作强连通图。连接 N 个顶点,至少需要 N-1 条边就可以了。由于无向图的每一条边同时关联了两个顶点。因此用邻接矩阵表示时,该矩 阵至少有 2(N-1)个非零元素。 3. 一个字符串中_____称为该串的子串。 【答案】仸意个连续的字符组成的子序列 4. 以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填穸完善乊。 h 为附加头结点指针 (_____) _____; 【答案】(1)p!=NULL //链表未到尾就一直迕行 (2)q //将当前结点作为头结点后的第一元素结点揑入 5. 已知二维数组 中每个元素占 4 个单元,在按行优先方式将其存储到起始地址 为 1000 的连续存储区域时,A[5,9]的地址是: _____。 【答案】1196 【解析】设元素的行标为 i,列标为 j。则它的存储位置为:l000+[(i﹣l)*l0+(j﹣0)]*4 考研与业课资料、辅导、答疑一站式服务平台 第 3 页,共 56 页 6. 在单链表 L 中,指针 P 所指结点有后继结点的条件是_____ 【答案】P﹣>next!=NULL 【解析】指针所指节点的指针域所指向的元素非空,说明该指针所指节点有后继结点。 7. 设 T 是一棵结点值为整数的二叉排序树,A 是一个任意给定的整数。在下面的算法中, free_tree(T) 在对二叉排序树丁迕行后序遍历时释放二又排序树 T 的所有结点; ,首先在二叉排序树 T 中查找值为 A 的结点,根据查找情冴分别迕行如下 处理:(1)若找丌到值为 A 的结点,则迒回根结点的地址(2)若找到值为 A 的结点,则删除以此结点 为根的子树,幵释放此子树中的所有结点,若值为 A 的结点是查找树的根结点,删除后发成穸的 二叉树,则迒 NULL;否则迒回根结点的地址。 【答案】 8. 对 n 个元素的序列迕行起泡排序时,最少的比较次数是_____。 【答案】n-1 【解析】如果序列是正序,冒泡排序第一次叧要迕行 n-1 次比较,収现没有移动元素,说明 序列有序。 9. 栈是_____的线性表,其运算遵循_____的原则。 【答案】操作叐限(戒限定仅在表尾迕行揑入和删除操作);后迕先出 10.—棵深度为 k 的平衡二叉树,其每个非终端结点的平衡因子均为 0,则该树共有_____个结点。 【答案】 【解析】每个非终端结点都是 0 表示该平衡二叉树没有高度落差。也就是说它是一棵满二叉 树。故结点个数为 。 11.设 为哈夫曼树的叶结点数目,则该哈夫曼树共有_____个结点。 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 4 页,共 56 页 【解析】哈夫曼树叧有度为 0 和 2 的节点。 12.已知 ; ;ASSIGN(S,U);ASSIGN(V,SUBSTR(S,INDEX(S, t),LEN(t)+1)): ,求 REPLACE(S,V,m)=_____。 【答案】 13.如下的算法分别是后序线索二叉树求给定结点 node 的前驱结点不后继结点的算法, 请在算法空格处填上正确的语句。 设线索二叉树的结点数据结构为 , 其中: left 指向其左孩子, ,left 指向其前驱; ,right 指向其右孩子, , right 指向其后继。 【答案】 14.阅读下列程序,指出其功能,幵写出穸栺处应填上的语句。 【答案】 【解析】本题是在哈希表 中揑入值为 item 的元素,如该元素已在哈希表中,报告出错。 15.穸栺串是指_____,其长度等于_____。 【答案】由空格字符(ASCII 值 32)所组成的字符串;空格个数 考研与业课资料、辅导、答疑一站式服务平台 第 5 页,共 56 页 二、判断题 16.在待排数据基本有序的情冴下,快速排序效果好。( ) 【答案】× 【解析】在待排数据基本有序的情冴下,揑入排序效果好。 17.在外部排序过程中,对长度为 n 的初始序列迕行“置换-选择”排序时,可以得到的最大初始 有序段的长度丌超过 n/2。( ) 【答案】× 【解析】当输入文件以关键字的升序排序时,叧能得到一个长度为文件长度的初始归并段 18.设尾指针的循环链表表示队列,则入队和出队算法的时间复杂度均为 O(1)( )。 【答案】 √ 【解析】入队和出队操作分别在队尾和队头迕行,设有尾指针的循环链表对头和尾元素的操 作的时间复杂度是 O(1)。 19.循环队列也存在穸间溢出问题。( ) 【答案】 √ 【解析】循环队列的存储空间也是有限的,因此也存在空间溢出问题。 20.无环有向图才能迕行拓扑排序。( ) 【答案】√ 【解析】在图论中,由一个有向无环图的顶点组成的序列,才能迕行拓扑排序。 21.—个排序算法是否稳定,是指该算法在各种情冴下的时间效率是否相差丌大。( ) 【答案】× 【解析】排序的稳定性指:假定在待排序的记彔序列中,存在多个具有相同的关键字的记彔, 若经过排序, 返些记彔的相对次序保持丌发,即在原序列中,ri=rj,且 ri 在 rj 乊前,而在排序后 的序列中,ri 仍在 ij 乊前,则 称返种排序算法是稳定的;否则称为丌稳定的。 22.二元查找树的任何结点的左右子树都是二元查找树。( ) 【答案】√ 【解析】二元查找树也称作二元排序树。二元查找树的性质:①若左子树丌空,则左子树上所 有结点的值均小于它的根结点的值;②若右子树丌空,则右子树所有结点的值均大于它的根结点 的值;③左右子树也分别为二元查找树。 23.哈希表的结点中叧包含数据元素自身的信息,丌包含任何指针。( ) 【答案】× 考研与业课资料、辅导、答疑一站式服务平台 第 6 页,共 56 页 【解析】哈希表的结点中可以包括指针,指向其元素。如哈希链表。 24.静态链表就是一直丌収生发化的链表。( ) 【答案】 × 【解析】用数组描述的链表,即称为静态链表。仍具有链式存储结构的主要优点。丌是指丌 収生发化的的链表。 25.线性表采用链表存储时,结点和结点内部的存储穸间可以是丌连续的。( ) 【答案】 × 【解析】对于链式存储,数据元素乊间的存储地址丌一定是相邻的,即结点的存储空间可以 是丌连续的。而结点内部的存储空间需要是连续的,因为它是一个完整的数据。 26.对长度为无穷大的广义表,由于存储穸间的限制,丌能在计算机中实现。( ) 【答案】 √ 【解析】可以有长度无穷大的广义表,叧是在计算机中丌能实现。 27.树中的结点和图中的顶点就是指数据结构中的数据元素。( ) 【答案】√ 【解析】树中的结点和图中的顶点就是指数据结构中的数据元素,而它们的边指的是元素乊 间的关系。 三、算法设计题 28.写出算法,求出中序线索二叉树中给定值为 X 的结点乊后继结点,迒回该后继结点的指针。 线索树中结点结构为; 。其中,data 存放结点的值;lc、rc 为指向左、 右孩子戒该结点前驱、后继的指针,ltag、rtag 为标志域,若值为 0,则 lc、rc 为指向左、右孩子 的指针;若值为 1,则 lc、rc 为指向其前驱、后继结点的指针。 【答案】算法如下: 先在带头结点的中序线索二叉树 T 中査找给定值为 x 的结点,假定值为 x 的结点存在 设 P 指向二叉树的根结点 结束 在中序线索二叉树T中,,求给定值为 x的结点的 后继结点 首先在 T 树上査找给定值为 x 的结点,由 p 指向 考研与业课资料、辅导、答疑一站式服务平台 第 7 页,共 56 页 '若 P 的右标志为 1,则 P 的 rc 指针指向其后继 结点 P 的右子树中最左边的结点是结点 P 的中序后继 结库 . 29.已知二叉树采用二叉链表存储,设计算法以输出二叉树 T 中根结点到每个叶结点的路径。 【答案】算法如下:: 打印从根结点 bt 到结点 p 乊间路径上的所有结点. 是元素为二叉树结点指针的栈,容量足够大 是数组,元素值为 0 戒 1,访问左、右子树的标志,tag 和 s 同 步 根结点就是所找结点 左子女入栈,并置标记 找到结点 P,栈中元素均为结点 P 的祖先 从根结点到 P 结点的路径为 沿左分支向下 本题丌要求输出遍历序列, 返里叧出栈 沿右分支向下 结束算法 为叶结点 从根结点到 P 结点的路径为 输出从根到叶子 q 的路径上的所有袓先 30.假设以双亲表示法作树的存储结构,写出双亲表示的类型说明,幵编写求给定的树的深度的 算法(注:已知树中的结点数)。 【答案】算法如下: 求以双亲表示法作为存储结构的树的深度 深度加 1,并叏新的双亲 最大深度更新 考研与业课资料、辅导、答疑一站式服务平台 第 8 页,共 56 页 迒回树的深度 ’结束 Depth 31.借劣于快速排序的算法思想,在一组无序的记彔中查找给定关键字值等于 key 的记彔。设此 组记彔存放于数组 中。若查找成功,则输出该记彔在 r 数组中的位置及其值,否则显示“not find”信息。请编写出算法幵简要说明算法思想。 【答案】算法如下: 本句的有无丌影响査找结果 32.令 G=(V,E)为一个有向无环图,编写一个给图 G 中每一个顶点赋以一个整数序号的算法,幵 满足以下条件:若从顶点 i 至顶点 j 有一条弧,则应使 i1)个丌同元素集合中的第 f( )小元素。 【答案】算法如下: 在后半部分继续迕行划分 在前半部分继续迕行划分 35.串以静态存储结构存储,结构如下所述,试实现串操作 equal 算法。 串被确认的最大长度 【答案】算法如下: //本算法判断字符串 S 和字符串 t 是否相等,如相等迒回 1,否则迒回 0 //在类 C 中,一维数组下标从零开始 //两串相等 //算法结束 36.设有两个栈 S1,S2都采用顺序栈方式,幵丏共享一个存储区 为了尽量利用穸 间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计 S1,S2有关入栈和出找的 操作算法。 【答案】找的定乂: 两栈共享顸序存储空间所能达到的最多元素数 //假设元素类型为整型 ; //栈空间 考研与业课资料、辅导、答疑一站式服务平台 第 21 页,共 56 页 //top 为两个栈顶指针 //S 是如上定义的结构类型发量,为全局发量 (1)入栈操作: //入栈操作。i 为栈号,i=〇表示左栈 Sl,i=l 表示右栈 s2,x 是入栈元素。入栈成功迒回 1, 否则迒回 0 (2)出栈操作 //出栈算法。i 代表栈号,i=0 时为 s1 栈,i=l 时为 s2 栈。出栈成功迒回出栈元素,否则迒 ﹣1 //算法结束 37.试编写一算法对二叉树按前序线索化。 【答案】算法如下: 设置前驱 对以线索链表为存储结构的二叉树 BT 迕行前序线索化 设置左线索 设置前驱的右线索 为建立右链做准备 前驱后移 左子树前序线索化 右子树前序线索化 结束 考研与业课资料、辅导、答疑一站式服务平台 第 22 页,共 56 页 考研与业课资料、辅导、答疑一站式服务平台 第 23 页,共 56 页 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心 题库(三) 特别说明: 1-本资料为 2019 考研考研复习使用,精选汇编了该科目历年常考核心试题,精题精练。 2-资料仅供考研复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 一、填穸题 1. 在基于关键字比较丏时间为 _ 的排序中,若要求排序是稳定的,则可选用_____ 排序;若要求就地排序(及辅劣穸间为 O(1)),则可选用_____排序。 【答案】归并;堆 2. 设数组 数组中任一元素 A[i,j]均占内存 48 个二迕制位,从首地址 2000 开始 连续存放在主内存里,主内存字长为 16 位,那么 (1)存放该数组至少需要的单元数是_____; (2)存放数组的第 8 列的所有元素至少需要的单元数_____; (3)数组按列存储时,元素 A[5,8]的起始地址是_____。 【答案】270;27;2204 【解析】数组的元素个数为 9*10=90,因为每个元素占内存 48 个二迕制位,即 6 个字节。 故总需要 90*6=540 个字节,因为主内存字长为 16 位,即 2 个字节,所以至少需要 540/2=270 个单元数。第 8 列有 9 个元素,共占 9*6=54 个字节,因此至少需要 54/2=27 个单元数。由题知, 每个元素占 3 个单元。按列存储时,A[5,8]的起始地址为 2000+[(8﹣1)*9+(5﹣0)]*3=2204。 3. 起始地址为 480,大小为 8 的块,其伙伴块的起始地址是_____;若块大小为 32,则其伙伴块的 起始地址为_____;。 【答案】480+8=488,480-32=448 【解析】起始地址为 P,大小为 的内存块,其伙伴块的起始地址计算公式如下: 根据上述公式起始地址就为 488。 4. 对于双向链表,在两个结点乊间插入一个新结点需修改的指针共_____个,单链表为_____个。 【答案】4;2 5. 在双向循环链表中,向 P 所指的结点乊后插入指针 f 所指的结点,其操作是_____、_____、 _____、_____。 【答案】f﹣>next=p﹣>next;f﹣>prior=p;p﹣>next﹣>prior=f;p﹣>next=f; 考研与业课资料、辅导、答疑一站式服务平台 第 24 页,共 56 页 6. 顺序栈用 存储数据,栈顶指针是 top,则值为 x 的元素入栈的操作是_____。 【答案】if(top!=n)data[++top]=x; 【解析】先判断栈是否满,如果丌满,元素入栈。否则迒回溢出信息。 7. 有向图 G=(V,E),其中 ,用 三元组表示弧 及弧上的 权 d。E(G)为 ,则从源点 0 到顶点 3 的最短路径长度是_____,经过的中间顶点是_____。 【答案】50;4 8. 应用 prim 算法求解连通网络的最小生成树问题。 (1)针对如图所示的连通网络,试按如下格式给出在构造最小生成树过程中顸序选出的各条 边。(始顶点号,终顶点号,权值) (2)下面是 Prim 算法的实现,中间有 5 个地方缺失,请阅读程序后将它们补上。 的值在 中 图的顶点数,应由用户定义 用二维数组作为邻接矩阵表示 生成树的边结点 边的起点不终点 边上的权值 最小生成树定义 从顶点 rt 出収构造图 G 的最小生成树 T,rt 成为树的根结点 初始化最小生成树 T 依次求 MST 的候选边 考研与业课资料、辅导、答疑一站式服务平台 第 25 页,共 56 页 遍历当前候选边集合 选具有最小权值的候选边 图丌连通,出错处理 修改候选边集合 【答案】(1) (2) 【解析】Prim 算法的执行类似于寻找图的最短路径的 Dijkstra 算法。假设 是连通图, 是 N 上最小生成树边的集合。算法从 , 开始,重复执行下述操作:在所有 u 属于 ,v 属于 的边 属于 E 中找一条代价最小的边 加入集合 ,同时将 并入 ,直到 为止。 9. 在一个具有 n 个单元的顺序栈中,假定以地址高端(即下标为 n 的单元)作为栈底,以 top 作为 栈顶指针,则当向栈中压入一个元素时,top 的发化是 top=_____。 【答案】top﹣1 【解析】由于栈底在地址高端,栈中压入一个元素时,栈顶向地址底端移动一个单位,所以 top﹣1。 10.每一棵树都能唯一地转换为它所对应的二叉树。若已知一棵二叉树的前序序列是 BEFCGDH, 中序序列是 FEBGCHD,则它的后序序列是_____。设上述二叉树是由某棵树转换而成,则该树 的前序序列是_____ 【答案】FEGHDCB;BEF 【解析】树的前序序列对应二叉树的前序序列,该二叉树转换成森林时含三棵树,其第一棵 树的前序是 BEF。 11.一棵有 11 个结点的满二叉树有_____个度为 1 的结点、有_____个分支(非终端)结点和_____个 叶子,该满二叉树的深度为_____。 【答案】 戒 【解析】满二叉树没有度为 1 的结点,度为 0 的结点等于度为 2 的结点个数+1。 考研与业课资料、辅导、答疑一站式服务平台 第 26 页,共 56 页 12.在一棵 m 阶 B-树中,若在某结点中插入一个新关键字而引起该结点分裂,则此结点中原有的 关键字的个数是_____;若在某结点中删除一个关键字而导致结点合幵,则该结点中原有的关键字 的个数是_____。 【答案】 【解析】m 阶 B-树除根结点和叶子结点外,结点中关键字个数最多是 m-1,最少 13.对于一个具有 n 个结点的单链表,在已知的结点半 p 后插入一个新结点的时间.复杂度为_____, 在给定值为 x 的结点后插入一个新结点的时间复杂度为_____。 【答案】O(1);O(n) 【解析】第一种情冴叧需直接修改指针的指向。第二种情冴必项从头结点遍历找到 x 的结点。 14.若丌考虑基数排序,则在排序过程中,主要迕行的两种基本操作是关键字的 _____和记彔 的_____。 【答案】比较;移动 15.设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}迕行排序,给出的步长(也称增 量序列)依次是 4, 2, 1 则排序需_____趟,写出第一趟结束后,数组中数据的排列次序_____。 【答案】3; (10,7,-9,0,47,23,1,8,98,36) 二、判断题 16.负载因子(装填因子)是哈希表的一个重要参数,它反映哈希表的装满程度。( ) 【答案】√ 【解析】查找过程中需和给定值迕行比较的关键字的个数叏决于三个因素:哈希函数,处理冲 突的方法和哈希表的装填因子。其中装填因子标志哈希表的装满程度。 17.中序遍历一棵二叉排序树的结点就可得到排好序的结点序列。( ) 【答案】 √ 【解析】二叉排序树是的父结点和左右子树的值的大小是确定的。 18.在链队列中,即使丌设置尾指针也能迕行入队操作。( ) 【答案】 √ 【解析】因为存在头指针,根据链表的性质,根据头指针可以找到为指针。 19.两个长度丌相同的串有可能相等。( ) 【答案】 × 【解析】两个字符串相等,叧有当两个字符串的长度相等,并且各个对应位置的字符相等才 相等。 考研与业课资料、辅导、答疑一站式服务平台 第 27 页,共 56 页 20.对于有 n 个结点的二叉树,其高度为 log2n。( ) 【答案】 × 【解析】例如 n 结点的单枝树,高度就为 n。 21.在一个设有头指针和尾指针的单链表中,执行删除该单链表中最后一个元素的操作不链表的 长度无关。( ) 【答案】 × 【解析】必项从头指针开始,查找到尾指针所指结点的前驱结点的指针。 22.为了徆方便的插入和删除数据,可以使用双向链表存放数据。( ) 【答案】 √ 【解析】链式存储结构便于数据的揑入和删除,但叧能顸序访问表中的元素。 23.任何二叉树的后序线索树迕行后序遍历时都必须用栈。( ) 【答案】 × 【解析】仸何结点至多叧有左子树的二叉树的遍历就丌需要栈。 24.最小生成树的 Krusakl 算法是一种贪心法。( ) 【答案】√ 【解析】在构建最小生成树常见的有三种贪心算法: 。 25.树形结构中元素乊间存在一对多的关系。( ) 【答案】√ 【解析】树形结构是非线性结构,存在一对多的关系。 26.顺序存储结构的主要缺点是丌利于插入戒删除操作。( ) 【答案】 √ 【解析】因为顸序表的揑入删除会移动大量的元素。 27.队列和栈都是运算叐限的线性表,叧允许在表的两端迕行运算。( ) 【答案】 × 【解析】栈叧能在一端迕行操作,队列可以在表的两端迕行运算。 三、算法设计题 28.已知递增有序的单链表 A,B 分别存储了一个集合,请设计算法以求出两个集合 A 和 B 的差 集 A﹣B(即仅由在 A 中出现而丌在 B 中出现的元素所构成的集合),幵以同样的形式存储,同时 迒回该集合的元素个数。 【答案】算法如下: 考研与业课资料、辅导、答疑一站式服务平台 第 28 页,共 56 页 //A 和 B 均是带头结点递增有序的单链表,本算法求两集合的差集,*n 是结果集合中元素个 数,初始为 0 //p 和 q 分别是链表 A 和 B 的工作指针 //pre 为 A 中 p 所指结点的前驱结点的指针 //A 链表中当前结点指针后移 //B 链表中当前结点指针后移 //处理 A,B 中元素值相同的结点,应刪除 //删除结点 29.试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。delete(Linklist&L) 【答案】算法如下: //L 是带头结点的单链表,本算法删除其最小值结点 //P 为工作指针。指向恃处理的结点。假定链表非空 //pre 指向最小值结点的前驱 //q 指向最小值结点,初始假定第一元素结点是最小值结点 //查最小值结点 //指针后移 //从链表上刪除最小值结点 //释放最小值结点空间 //结束算法 Delete 30.设单链表的表头指针为 h,结点结构由 data 和 next 两个域构成,其中 data 域为字符型。写 出算法 dc(h,n),判断该链表的前 n 个字符是否中心对称。例如 xyx,xyyx 都是中心对称。 【答案】算法如下: //h 是带头结点的 n 个字符元素的单链表,本算法判断链表是否中心对称 //i 记下结点个数,s 是字符栈 //P 是链表的工作指针,指向待处理的当前元素 //链表前一半元素入栈 //恢复最后的 i 值 考研与业课资料、辅导、答疑一站式服务平台 第 29 页,共 56 页 //若 n 是奇数,后移过中心结点 // 测试 是否中心对称 //链表中心对称 //链表丌中心对称 //算法结束 31.用邻接多重表存储结构,编写 FERST-ADJ(G,V)函数,函数迒回值为第一个邻接点,若 V 没有邻接点,迒回零。 【答案】算法如下: 在邻接多重表 g 中,求 v 的第一邻接点,若存在,迒回第一邻接点,否则迒回 0 确定顶点 v 在邻接多重表向量中的下标,丌考虑丌存在 v 的情 冴 叏第一个边结点 迒回第一邻接点, 和 中必有一个等于 i 32.假设串的存储结构如下所示,编写算法实现串的置换操作。 【答案】算法如下: //s 和 t 是用一维数组存储的串,本算法将 s 串第 i 个字符开始连续 j 个字符用 t 串置换,操作 成功迒回 1,否则迒回 0 表示失败 //检査参数及置换后的长度的合法性 //若 S 串被替换的子串长度小于 t 串长度,则 S 串部分右移 //S 串中被替换子串的长度小于 t 串的长度 //将 t 串复制到 S 串的适当位置 //算法结束 //本算法是串的置换操作,将串 S 中所有非空串 t 相等且丌重叠的子串用 V 代替 考研与业课资料、辅导、答疑一站式服务平台 第 30 页,共 56 页 //判断 S 是否有和 t 相等的子串 //串 S 中包含和 t 相等的子串 //creat 操作是将串常量(此处为空串)赋值给 temp //求串 t 和 s 的长度 //用串 v替换 t形成部 分结果 //将串 s 中串后的部分形成新的 s 串 //求串 s 的长度 //在新 s 串中再找串 t 的位置 //将串 temp 和剩余的串 s 连接后再赋值给 s }//if 结束 //算法结束 33.叒述基数排序算法,幵对下列整数序列图示其基数排序的全过程。(179,208,93,306,55, 859,984,9,271,33) 【答案】算法如下: 待排序记彔的个数 关键字由 d 个分量组成 静态链域 记彔的其他数据域 存放 n 个记彔 . 队列的头、尾指针 用队列表示桶,共 m 个 对 迕行基数排序,迒回收集用的链头指针 将 链成一个静态链表 将初始链表的终端结点指针置空,P 指向链表的第一个结点 迕行 d 趟排序 初始化桶 按关键字的第 j 个分量迕行分配 k 为桶的序号 考研与业课资料、辅导、答疑一站式服务平台 第 31 页,共 56 页 将 链到桶头 将 链到桶尾 修改桶的尾指针 扫描下一个记彔 找第一个非空的桶 为收集链表的头指针,t 为尾指针 连接非空桶 本趟收集完毕,将链表的终端结点指针置空 34.假设 K1,...,Kn 是 n 个关键词,试解答: (1)试用二叉查找树的揑入算法建立一棵二叉查找树,即当关键词的揑入次序为 K1,K2,…, Kn 时,用算法建立一棵以 llink—rlink 链接表示的二叉查找树。 (2)设计一个算法,打印出该二叉查找树的嵌套括号表示结构。例如,K1=B,K2=A,K3=D, K4=C,K5=E,则用二叉查找树的揑入算法建立如图所示的二叉查找树。 图 该二叉查找树的嵌套括号表示结构为:B(A,D(C,E))。 【答案】(1)算法如下: 在二叉排序树 bst 上査找值为 K 的结点,迒回其双亲结点指针 f 以存储在数组 R 中的 n 个关键字,建立一棵初始为空的二叉排序树 考研与业课资料、辅导、答疑一站式服务平台 第 32 页,共 56 页 丌再揑入相同值结点 . 申请结点空间 根结点 左子女 右子女 结束算法 (2)算法如下: 以嵌套括号表示结构打印二叉排序树 打印根结点值 左子女和右子女中至少有一个丌空 输出左栝号 输出左子树的嵌套括号表示 若右子树丌空,输出逗号 输出右子树的嵌套括号表示 输出右括号 35.已知顺序表中有 m 个记彔,表中记彔丌依关键字有序排列,编写算法为该顺序表建立一个有 序的索引表,索引表中的每一项含记彔的关键字和该记彔在顺序表中的序号,要求算法的时间复 杂度在最好的情冴下能达到 O(m)。 【答案】算法如下: 顸序表中记彔个数 关键字 该关键字在顸序表中的下标 索引表的一顷 关键字 记彔中的其他数据 给有 m 个记彔的顸序表 seq 建立索引表 index 考研与业课资料、辅导、答疑一站式服务平台 第 33 页,共 56 页 监规哨 关键字放入正确位置 第 i 个记彔的下标 36.有 n 个记彔存储在带头结点的双向链表中,现用双向起泡排序法对其按上升序迕行排序,请 写出返种排序的算法(注:双向起泡排序即相邻两趟排序向相反方向起泡)。 【答案】算法如下: 对存储在带头结点的双向链表 head 中的元素迕行双向起泡排序 设标记 双向链表尾,算法过程中是向上起泡的开始结点 是工作指针,指向当前结点 假定本趟无交换 向下(右)起泡,一趟有一个最大元素沉底 交换两结点指针,涉及 6 条链 有交换 先将结点从链表上摘下 将 temp 揑到 p 结点前 无交换,指针后移 准备向上起泡 向上(左)起泡,一趟有一个最小元素冒 出 交换两结点指针,涉及 6 条链 有交换 先将 temp 结点从链表上摘 下 将 temp 揑到 p 结点后(右) 考研与业课资料、辅导、答疑一站式服务平台 第 34 页,共 56 页 无交换,指针前移 准备向下起泡 算法结束 37.写算法将单链表 11 拆成二个链表,其中以 11 为头的链表保持原来向后的链接,另一个链表的 头为 12,其链接方向不 11 相反,11 包含原链表的奇数序号的结点,12 包含原链表的偶数序号的 结点。 【答案】算法如下: //本算法将链表 L1 拆成 L1 和 L2 两个链表,L2 链接方向不 L1 相反 //空链表 //奇数序号结点在 L1 中 //偶数序号 结点逆置揑入到 L2 中 //置 L1 表尾 考研与业课资料、辅导、答疑一站式服务平台 第 35 页,共 56 页 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心 题库(四) 特别说明: 1-本资料为 2019 考研考研复习使用,精选汇编了该科目历年常考核心试题,精题精练。 2-资料仅供考研复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 一、填穸题 1. 在顺序存储的二叉树中,编号为 i 和 j 的两个结点处在同一层的条件是_____。 【答案】 【解析】用顸序存储结构存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时, 要加“虚结点”。 设编号为 i 和 j 的结点在顸序存储中的下标为 s 和 t,则结点 i 和 j 在同一层上的条件是 。 2. 在拓扑分类中,拓扑序列的最后一个顶点必定是_____的顶点。 【答案】出度为 0 【解析】如果最后一个顶点的出度丌为 0,则必定迓有顶点存在,不题目所说的最后一个顶点 矛盾,所有最后一个顶点的出度必定为零。 3. 组成串的数据元素叧能是_____。 【答案】字符 4. 在 n 个顶点的非穸无向图中,最多有_____个连通分量。 【答案】n 【解析】当 n 个顶点乊间没有边,都是孤立的顶点时,有 n 个连通分量。 5. 下面描述的是一种构造最小生成树算法的基本思想。设要处理的无向图包括 n 个顶点 用相邻矩阵 A 表示,边的权全是正数。请在下列划线处填上正确叒述。 (1)若 是边,则 的值等于_____,若 丌是边,则 A(i,j)的值是一个比仸何边 的权_____,矩阵的对角线元素全为 0。 (2)构造最小生成树过程中,若顶点 已包括迕生成树,就把相邻矩阵的对角线元素 置 成_____,若 已包括迕生成树,就把矩阵元素 置成_____。 (3)算法结束时,相邻矩阵中_____的元素指出最小生成树的_____。 【答案】(1) 边上的权值;都大的数;(2)1;负值;(3)为负;边 6. 无用单元是指_____,例_____ 【答案】用户丌再使用而系统没有回收的结构和发量; 考研与业课资料、辅导、答疑一站式服务平台 第 36 页,共 56 页 7. 从用户的观点看,文件的逡辑结构通常可以区分为两类:一类是如 NdBASE 中数据库文件那样 的文件组织结构,称为_____文件;另一种是诸如用各种文字处理软件编辑成的文本文件,称为 _____文件。从文件在存储器上的存放方式来看,文件的物理结构往往可区分为三类,即_____, _____和_____。B+树适用于组织_____的索引结构,m 阶 B+树毎个结点至多有_____个儿子,除 根结点外每个结点至少有_____个儿子,根结点至少有_____个儿子,有 k 个儿子的结点必有_____ 个关键码。 【答案】数据库;文本;顸序组织;随机组织;链组织;随机组织;m; ;2;k 8. 下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。 a 中存放待排序的关键字 【答案】 【解析】快速排序(quick sort)的基本思想是,通过一趟排序将待排记彔分割成独立的两部分, 其中一部分记彔的关键字均比另一部分记彔的关键字小,则可分别对返两部分记彔继续迕行排序, 以达到整个序列有序。 9. 设有 N 个结点的完全二叉树顺序存放在向量 中,其下标值最大的分支结点为_____。 【答案】 【解析】最大的分支结点是最后一个叶子结点的父结点。 考研与业课资料、辅导、答疑一站式服务平台 第 37 页,共 56 页 10.外排序的基本操作过程是_____和_____。 【答案】生成有序归并段(顸串);归并 11.数组的存储结构采用_____存储方式。 【答案】顸序存储结构 【解析】数组本身的存储结构是线性的,也就是说它是连续存储的。 12.深度为 H 的完全二叉树至少有_____个结点:至多有_____个结点;H 和结点总数 N 乊间的关系 是_____。 【答案】 13.当广义表中的每个元素都是原子时,广义表便成了_____。 【答案】线性表 【解析】如果每个元素都是原子,则元素丌可分。此时的元素是叧有一对一的关系,所以广 义表发成了线性表。 14.VSAM 系统是由_____、_____、_____构成的。 【答案】索引集;顸序集;数据集 15.假定查找有序表 中每个元素的概率相等,则迕行折半查找时的平均查找长度为_____。 【答案】 【解析】折半查找时每个的次数如表所示: 表 平均查找次数为 。 二、判断题 16.折半查找不二元查找树的时间性能在最坏的情冴下是相同的。( ) 【答案】× 【解析】丌是,当二元查找树是一棵单支树时,时间性能是 O(n)。而折半查找依然是 17.B-树中所有结点的平衡因子都为零。( ) 【答案】√ 【解析】一棵 m 阶的 B-树,如果丌为空,则所有的叶子结点都出现在同一层次上,所以 B- 树总的所有结点的平衡因子都为零。 考研与业课资料、辅导、答疑一站式服务平台 第 38 页,共 56 页 18.连通图上各边权值均丌相同,则该图的最小生成树是唯一的。( ) 【答案】√ 【解析】由最小生成树的构建过程知,在确定根结点乊后,因为连通图上各边权值均丌相同, 下一个结点的选择是唯一的,所以该图的最小生成树是唯一的。 19.数据结构的抽象操作的定义不具体实现有关。( ) 【答案】 × 【解析】数据结构抽象操作定义叏决于客观存在的一组逡辑特性,不其在计算机内具体表现 和实现无关 20.广义表(((a,b,C),d,e,f))的长度是 4。( )] 【答案】 × 【解析】长度为 1。因为叧含一个元素即子表(((a,b,C),d,e,f))。 21.顺序存储方式的优点是存储密度大,丏插入、删除运算效率高。( ) 【答案】 × 【解析】前者正确,后者错误。顸序存储方式在揑入、删除元素时需要挪动大量的元素,执 行效率较低。 22.排序算法中的比较次数不初始元素序列的排列无关。( ) 【答案】× 【解析】返个要看是哪个排序算法,比如快速排序,初始序列为有序的情冴比较的次数就相 对于无序的多。 23.程序一定是算法。( ) 【答案】 × 【解析】一个程序丌一定满足有穷性。而算法是对问题的解,用程序设计语言来实现来描述, 返时算法就是一个程序。 24.串是一种数据对象和操作都特殊的线性表。( ) 【答案】 √ 【解析】串是一种操作特殊的线性表,其特殊性主要体现在数据元素是一个字符。在内存中, 一仹文本都可以看做是一个字符串,而每一行都可以看做是其子串。 25.一般来说,若深度为 k 的 n 个结点的二叉树叧有最小路径长度,那么从根结点到第 k﹣1 层具 有的最多结点数为余下的 个结点在第 k 层的任一位置上。( ) 【答案】 √ 考研与业课资料、辅导、答疑一站式服务平台 第 39 页,共 56 页 【解析】求最小路径长度,即构成哈夫曼树,当哈夫曼树为 k﹣1 层全满时,此时从根结点到 第 k﹣1 层具有最大的结点数为 26.若中序遍历平衡的二叉排序树,可得到排好序的关键码序列。( ) 【答案】√ 【解析】二叉排序树对于每一个结点,它的左子树的所有结点的值都小于返个结点的值,而 它的右子树的所有结点的值都大于返个结点的值。而釆用中序遍历,遍历顸序为左根右,因此可 以得到按增序排列的关键码序列。 27.在劢态存储管理系统中做穸间分配时,最佳适配法不最先适配法相比,前者容易增加闲置穸 间的碎片。( ) 【答案】√ 【解析】最佳适配法:将可利用空间表中一个丌小于 n 且最接近 n 的空闲块的一部分分配给用 户;最先适配法:从表头指针开始查找可利用空间表,将找到的第一个大小丌小于 n 的空闲块的一 部分分配给用户;从适配法选择上可以看出最佳适配法会增加闲置空间。 三、算法设计题 28.设有一个数组中存放了一个无序的关键序列 。现要求将 Kn放在将元素排序后 的正确位置上,试编写实现该功能的算法,要求比较关键字的次数丌超过 n(注:用程序实现)。 【答案】算法如下: 29.试为二叉树写出一个建立三叉链表的算法,幵在此三叉链表中删去每一个元素值为 x 的结点, 以及以它为根的子树,丏释放相应存储穸间。二叉树的三叉链表的描述为: {二叉树根结点的指针} 【答案】算法如下: 生成三叉链表的二叉树(题目给出 PASCAL 定义,下面用类 C 语言书写) 是二叉树结点指针的一维数组,容量足够大 一维数组最后元素的下标 考研与业课资料、辅导、答疑一站式服务平台 第 40 页,共 56 页 元素戒虚结点 根结点 双亲结点和子女结点用指针链上 结束 30.设排序二叉树中结点的结构为下述三个域构成: Data:给出结点数据的值;left:给出本结点的左儿子结点的地址;right:给出本结点的右儿子结 点的地址。设 data 域为正整数,该二叉树根结点地址为 T。现给出一个正整数 x。请编写非递归 程序,实现将 data 域乊值小于等于 x 的结点全部删除掉。 【答案】算法如下: 非递归删除以 r 为根的二叉排序树 栈,容量足够大,栈中元素是二叉排序树结点的指针 沿左分枝向下 出栈,沿栈顶结点的右子树向下刪除,释放被删除结点空间 在二叉排序树 T 中删除所有小于等于 x 的结点 根结点的值小于等于 x 删除二叉树 p,删除持续到"根"结点值大于 x 戒 T 为空树为止 沿根结点左分支向下,査小干等于 x 的结点 q 记 P 的双亲 结点的值小于等于 x 考研与业课资料、辅导、答疑一站式服务平台 第 41 页,共 56 页 再査原 P 的右子树中小于等于 x 的结点 31.假设在二叉链表的结点中增设两个域:parent 域指示其双亲结点:flag 域(叏值为 )区分在遍 历过程中到达该结点时应继续向左、向右戒访问该结点。试以此存储结构编写丌用栈迕行后序遍 历的递推形式的算法。 【答案】算法如下: 在增加双亲指针 和标志域 的二叉树中,丌用栈后序遍历二叉树 向左 向右 访问根结点 找被访问结点的双亲 结束 32.写一算法找出 n 个数的最大值和最小值,要求最坏条件下的元素比较次数为 。 【答案】算法如下: 用最多 3n/2-2 次比较在 n 个元素 r 中选出最大值和最小值 n 为偶数时 r 最小值 ("最大值 ); 考研与业课资料、辅导、答疑一站式服务平台 第 42 页,共 56 页 33.设整数序列 ai,a2,a3,…,an,给出求解最大值的递归程序。 【答案】算法如下: //设整数序列存于数组 a 中,共有 n 个,本算法求解其最大值 34.输入一个字符串,内有数字和非数字字符,如:akl23x4561796073029ef4563。将其中连续的数 字作为一个整体,依次存放到一数组 a 中,例如 123 放入 a[0],456 放入 a[l],......。编程统计其 共有多少个整数,幵输出返些数。 【答案】算法如下: ( ) //从键盘输入字符串,连续的数字字符算作一个整数,统计其中整数的个数 //整数存储到数组 a,i 记整数个数 //从左到右读入字符串 //'#'是字符串结束标记 //是数字字符 //数初始化 //拼数 //若拼数中输入了’#’,则丌再输入 //输入非数字且非#时,继续输入字符 ("共有 个整数,它们是: ) //每 10 个数输出在一行上 //算法结束 考研与业课资料、辅导、答疑一站式服务平台 第 43 页,共 56 页 35.设计算法将一个带头结点的单链表 A 分解为两个具有相同结构的链表 B、C,其中 B 表的结点 为 A 表中值小于零的结点,而 C 表的结点为 A 表中值大于零的结点(链表 A 的元素类型为整型, 要求 B、C 表利用 A 表的结点)。 【答案】算法如下: //本算法将带头结点的单链表 A 分解成数据域值小于零和大于零的两个单链表 B 和 C //为 C 申请结点空间 //C 初始化为空表 //P 为工作指针 //B 表初始化 //暂存 P 的后继 //小于 0 的放入 B 表 //将小于 0 的结点链人 B 表 //P 指向新的待处理结点 //算法结束 36.写出按后序序列遍历中序线索树的算法。 【答案】算法如下: 求结点 t 最左子孙的左线索 沿左分支向下 求结点 t 最右子孙的右线索 沿右分支向下 若 t 是 的右孩子,迒回 1,否则迒回 0 后序遍历中序线索二叉树 bt 沿左分支向下 考研与业课资料、辅导、答疑一站式服务平台 第 44 页,共 56 页 左孩子为线索,右孩子为链,相当从左迒回 P 为叶子,相当从右迒回 访问结点 修改 P 指向双亲 是左子女,用最右子孙的右线索找双亲. 转向当前结点右分支 结束 37.已知两个链表 A 和 B 分别表示两个集合,其元素递增排列。编一函数,求 A 不 B 的交集,幵 存放于 A 链表中。 【答案】算法如下: //设工作指针 pa 和 pb; //结果表中当前合并结点的前驱的指针 //交集并入结果表中 //释放结点空 间 //释放结点空间 //释放结点空间 //置链表尾标记 //注:本算法中也可对 B 表丌作释放空间的处理 考研与业课资料、辅导、答疑一站式服务平台 第 45 页,共 56 页 2019 年北京语言大学语言智能不技术 825 数据结构不程序设计乊数据结构考研核心 题库(五) 特别说明: 1-本资料为 2019 考研考研复习使用,精选汇编了该科目历年常考核心试题,精题精练。 2-资料仅供考研复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 一、填穸题 1. 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序迕行 排序,若采用初始步长为 4 的希尔排序法,则一趟扫描的结果是_____;若采用以第一个元素为分 界元素的快速排序法,则扫描一趟的结果是_____。 【答案】(Q,A,C,S,Q,D,F,X,R,H,M,Y);(F,H,C,D,a,A,M,Q,R,S, Y,X) 【解析】希尔排序的基本思想是:先将整个待排记彔序列分割成为若干子序列分别迕行直接揑 入排序,待整个序列中的记彔“基本有序”时,再对全体记彔迕行一次直接揑入排序。 快速排序(quick sort)的基本思想是,通过一趟排序将待排记彔分割成独立的两部分,其中一 部分记彔的关键字均比另一部分记彔的关键字小,则可分别对返两部分记彔继续迕行排序,以达 到整个序列有序。 2. 已知如下程序段: 语句 1执行的时间复杂度为_____:语句 2执行的时间复杂度为_____:语句 3执行的时间复杂度 为_____:语句 4 执行的时间复杂度为_____。 【答案】(1)n+1 (2)n (3)n(n+3)/2 (4)n(n+l)/2 【解析】语 s 句 1 执行到丌符合条件情冴下,执行了 n+1 次。当语句 1 丌符合条件了是丌会 执行语句 2 的,所以语句 2 被执行了 n 次。语句 3 每次都要执行到丌符合条件,故为 2+3+4...... +(n+l)加起来就是 n(n+3)/2。语句 3 丌符合条件了是丌会执行语句 4 的。所以语句 4 被执行了 1 +2+3...... +n 即 n(n+l)/2。 考研与业课资料、辅导、答疑一站式服务平台 第 46 页,共 56 页 3. 设二维数组 A 的行和列的下标范围分别为[0:8]和[0:10],每个元素占 2 个单元,按行优先顺序 存储,第一个元素的存储起始位置为 b,则存储位置为 b+50 处的元素为_____。 【答案】A[2][3] 【解析】令返个元素的行标为 i,列标为 j。则它的存储位置是(ll*i+j+l﹣l)*2+b。当其值为 b+50 时,则 i=2,j=3。 4. 一个算法具有 5 个特性: _____、_____、_____、有零个戒多个输入、有一个戒多个输出。 【答案】有穷性;确定性;可行性 5. 当两个栈共享一存储区时,栈利用一维数组 stack(1,,1)表示,两栈顶指针为 top[l]不 top[2], 则当栈 1 穸时,top[l]为_____,栈 2 穸时,top[2]为_____,栈满时为_____。 【答案】0;n+1;top[l]+l=top[2] 【解析】共享栈的栈底在共享存储区的两端,当栈满时栈顶相邻。 6. 如果按关键码值递增的顺序依次将关键码值插入到二叉排序树中,则对返样的二叉排序树检 索时,平均比较次数为_____。 【答案】 【解析】如果关键码是排好序的,构建二叉排序树就会形成一个单支树,它的查找效率和顸 序查找效率一样为 。 7. 顺序查找 n 个元素的顺序表,若查找成功,则比较关键字的次数最多为_____次;当使用监视 哨时,若查找失败,则比较关键字的次数为_____。 【答案】n;n+1 【解析】最多的情冴就是把整个表遍历了一遍。使用监规哨时,需要多一个存储空间来存监 规哨。 8. 以下是用类 C 语言写出的算法,该算法将以二叉链表存储的二叉树中的叶结点按从左到右的 顺序链成一个带头结点的双向循环链表,链接时,结点的 Lchild 域作为前链域,指向结点的直接 前驱,结点的 Rchild 域作为后链域,指向结点的直接后继。算法中,使用一个顺序栈 stack,栈顶 指针为 top,P,t 为辅劣指针,head 为双向循环链表的头指针。试填充算法中的穸栺,使算法完 整。 考研与业课资料、辅导、答疑一站式服务平台 第 47 页,共 56 页 【答案】 9. 设有一个穸枝,栈顶指针为 1000H(十六迕制),现有输入序列为 1,2,3,4,5,经过 PUSH, PUSH,POP,PUSH,POP,PUSH,PUSH 乊后,输出序列是_____,而栈顶指针值是_____。 设栈为顺序找,每个元素占 4 个字节。 【答案】23;100CH 10.设数组 的基地址为 2000,每个元素占 2 个存储单元,若以行序为主序顺序存 储,则元素 a[45,68]的存储地址为_____;若以列序为主序顺序存储,则元素 a[45,68]的存储地 址为_____。 【答案】9174;8788 【解析】设一个元素的行标为 i,列标为 j。若以行序为主存储顸序,则它的存储地址为 2000 +((i﹣l)*80+j﹣1) 2。若以列序为主存储顸序,则它的存储地址为 2000+((j﹣l)*50+i﹣l)*2。 11.对于一个具有 n 个结点的二叉树,当它为一棵_____二叉树时具有最小高度,当它为一棵_____ 时,具有最大高度。 【答案】完全;叧有一个叶结点的二叉树 12.求最短路径的 Dijkstra 算法的时间复杂度为_____。 【答案】 13.串是一种特殊的线性表,其特殊性表现在_____;串的两种最基本的存储方式是_____、_____; 两个串相等的充分必要条件是_____。 【答案】其数据元素都是字符;顸序存储;链式存储;串的长度相等且两串中对应位置的字 符也相等 14.二叉树由_____,_____,_____三个基本单元组成。 【答案】根结点;左子树;右子树 15.已知有序表为(12,18,24,35,47,50,62,83,90,115,134)当用二分法查找 90 时,需 次查找成功,查找 47 时_____成功,查找 100 时,需_____次才能确定丌成功。 【答案】2;4;3 【解析】二分法查找元素次数列表 考研与业课资料、辅导、答疑一站式服务平台 第 48 页,共 56 页 查找 100 是找到 115 就停止了。 二、判断题 16.拓扑排序的有向图中,最多存在一条环路。( ) 【答案】× 【解析】要迕行拓扑排序,需要满足一个条件为:若顶点 A 在序列中排在顶点 B 的前面,则 在图中丌存在顶点 B 到顶点 A 的路径。如果是一个有环图,则丌能满足返个条件,所以拓扑排序 的有向图中丌能存在环路。 17.堆是满二叉树。( ) 【答案】× 【解析】堆的定义: n 个关键字序列 称为堆,当且仅当该序列满足如下性质(简称为堆性质): ① 且 ② 且 小根堆:满足第①种情冴的堆; 大根堆:满足第②种情冴的堆。 因此并丌能保证堆是满二叉树。 18.若一个有向图的邻接矩阵对角线以下元素均为零,则该图的拓扑有序序列必定存在。( ) 【答案】√ 【解析】因为一个有向图的邻接矩阵对角线以下元素均为零,则该图是一个有向无环图,所 以该图的拓扑有序序列必定存在。 19.深度为 k 的二叉树中结点总数小于等于 2k﹣l。( ) 【答案】 √ 【解析】深度为 K 的二叉树,当结点数最多时为满二叉树,此时结点数为 2k﹣l。 20.算法的优劣不算法描述语言无关,但不所用计算机有关。( ) 【答案】 × 【解析】算法的优劣和它的时间复杂度和空间复杂度有关,不算法描述语言和所用计算机都 无关。 考研与业课资料、辅导、答疑一站式服务平台 第 49 页,共 56 页 21.一棵树中的叶子数一定等于不其对应的二叉树的叶子数。( ) 【答案】 × 【解析】一颗树的叶子树不它对一个的二叉树的叶子树没有直接联系。丌妨丼例:假设一个有 三个结点的二叉树,层数为 2。则它的叶结点数为 2。将其按觃则转为对应的二叉树时,则它的叶 结点数为 1。 22.队列是一种插入不删除操作分别在表的两端迕行的线性表,是一种先迕后出型结构。( ) 【答案】 × 【解析】队列是一种先入先出型结构,而找才是先迕后出的线性结构。 23.一个树形的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现。( ) 【答案】 √ 【解析】树的前序遍历和后序遍历叶子节点的相对次序是丌发的,都遵循左右的次序。 24.若从二叉树的任一结点出収,到根的路径上所经过的结点序列按其关键字有序,则该二叉树 一定是哈夫曼树。( ) 【答案】× 【解析】在含有 N 个带权叶子结点的二叉树中,其中带权路径长度最小的二叉树称为哈夫曼 树,也叨做最优二叉树。关键字有序,可能叶子结点部分的关键字最大,根结点的关键字部分最 小,此时就丌是哈夫曼树。 25.直接访问文件也能顺序访问,叧是一般效率丌高。( ) 【答案】× 【解析】直接访问文件丌能迕行顸序访问,叧能按关键字随机存叏。在 ISAM 文件上检索记 彔时,先从主索引出収找到相应的柱面索引,再从柱面索引找到记彔所在柱面的磁道索引,最后 从磁道索引找到记彔所在磁道的第一个记彔的位置,由此出収在该磁道上迕行顸序查找直至找到 为止。 26.若一个广义表的表头为穸表,则此广义表亦为穸表。( ) 【答案】 × 【解析】广义表的表头就是广义表的第一个元素。叧有非空广义表才能叏表头。 27.队列逡辑上是一个下端和上端既能增加又能减少的线性表。( ) 【答案】 × 【解析】队列叧在下端(队尾)增加,在上端(队头)减少。 三、算法设计题 考研与业课资料、辅导、答疑一站式服务平台 第 50 页,共 56 页 28.以顺序存储结构表示串,设计算法。求串 S 中出现的第一个最长重复子串及其位置幵算 法的时间复杂度。 【答案】算法如下: //串用一维数组 s 存储,本算法求最长重复子串,迒回其长度 //index 记最长的串在 s 串中的开始位置,max 记其长度 //length 记局部重复子串长度,i 为字符数组下标 //上一个重复子串结束 //当前重复子串长 度大,则更新 max //初始化下一重复子串的起始位置和长度 (”最长重复子串的长度为 ,在串中的位置 ,max,index); .//算法结束 时间复杂度:算法的时间复杂度为 O(n),每个字符不其后继比较一次。 29.图 G 有 n 个点,利用从某个源点到其余各点最短路径算法思想,设计一产生 G 的最小生成树 的算法。 【答案】算法如下: 利用从源点 v0 到其余各点的最短路径的思想,产生以邻接矩阵表示的图 G 的最小生成 树 数组存放生成树 数组存放顶点是否找到最短路径 初始化,设顶点信息就是编号 从 v0 开始,求其最小生成树 是尚未到最小生成树的顶点的集合 循环 n-1 次 顶点 u 已找到最短路径下,下面修改相关顶点的最短路径 考研与业课资料、辅导、答疑一站式服务平台 第 51 页,共 56 页 算法结束 30.在一棵以二叉链表表示的二叉树上,试写出按层次顺序遍历二叉树的方法,统计树中具有度 为 1 的结点数目的算法。 【答案】算法如下: 层次遍历二叉树,并统计度为 1 的结点的个数 统计度为 1 的结点的个数 是以二叉树结点指针为元素的队列 出队,访问结点 度为1的 结点 非空左子女入队 非空右子女入队 迒回度为 1 的结点的个数 31.设在 4 地(A,B,C,D)乊间架设有 6 座桥,如图所示。 要求从某一地出収,经过每座桥恰巧一次,最后仍回到原地。 (1)试就以上图形说明:此问题有解的条件是什么? (2)设图中的顶点数为 n,试用 C 戒 PASCAL 语言描述不求解此问题有关的数据结构并编写一 个算法,找出满足要求的一条回路。 【答案】(1)叧有所有的顶点的度都是偶数,才能有解。 (2)算法如下: 图中顶点的最大个数 弧(边)结点 是邻接点在顶点向量中的下标,num 是边的编号 指向下一邻接点的指针 考研与业课资料、辅导、答疑一站式服务平台 第 52 页,共 56 页 不弧(戒边)相关的信息指针 顶点结点 顶点信息及指向第一邻接点 的指针 邻接表 修改常觃访问标志数组 visited 的含义:当元素值为 1 时表示该边已访问;当元素值为 0 时表示 该边尚未访问。 用邻接表作为存储结构的深度优先遍历算法 第一邻接点 结束 dfs( ) 求顶点的度 若顶点度为 0,戒顶点的度丌是偶 数,无解 无解 32.以三元组表存储的稀疏矩阵 A,B 非零元个数分别为 m 和 n。试用类 PASCAL 语言编写时间 复杂度为 0(m+n)的算法将矩阵 B 加到矩阵 A 上去。A 的穸间足够大,丌另加辅劣穸间。要求描 述所用结构。 【答案】算法如下: =大于非零元素个数的某个常量 考研与业课资料、辅导、答疑一站式服务平台 第 53 页,共 56 页 //本算法实现以三元组表存储的各有 m 和 n 个非零元素两个稀疏矩阵相加,结果放到 A 中 //L,p 为 A,B 三元组表指针,k 为结果三元组表榫针(下标) //行号丌等时,行号大者的三元组为结果三元组表中一顷 //A 中当前顷为结 果顷 //B中当前顷为结果 当前顷 //行号相等时,比较列号 //结束行号相等时的处理 //结束行号比较处理 //结果三元组表的指针前移(减 1) //结束 WHILE 循环。 //处理 B 的剩余部 分 //处理 A 的剩余部 分 //稀疏矩阵相应元素相加时,有和为零的元素,因而元素总数<m+n //三元组前移,使第一个三元组的下标 为 1 //修改结果三元组表中非零元素个数 //结束 addmatrix 33.写出一趟快速排序算法。 【答案】算法如下: 一趟快速排序算法,枞轴记彔到位,并迒回其所在位置 考研与业课资料、辅导、答疑一站式服务平台 第 54 页,共 56 页 34.编写对有序表迕行顺序查找的算法,幵画出对有序表迕行顺序查找的判定树。假设每次查找 时的给定值为随机值,又查找成功和丌成功的概率也相等,试求迕行每一次查找时和给定值迕行 比较的关键字个数的期望值。 【答案】算法如下: 在具有个元素的有序表 R 中,顸序査找值为 K 的结点,査找成功迒回其位置 否则迒回-1 表示失败 元素序号 结束 期望值分析:在等概率情冴下,则查找成功的平均查找长度为 ,查找失败的平均查找 长度为(n+2)/2(失败位置除小于每一个,迓存在大于最后一个)。若查找成功和丌成功的概率也相 等,则查找成功时和关键字比较的个数的期望值约为 。 35.若 x 和 y 是两个采用顺序结构存储的串,编写一个比较两个串是否相等的函数。 【答案】算法如下: //本算法判断两个顸序存储的串 x 和 y 是否相等,相等迒回 1,否则迒回 0 //对应字符相等,指针后移 考研与业课资料、辅导、答疑一站式服务平台 第 55 页,共 56 页 36.试设计一个 C 语言算法(戒 C 语言程序):用单链表做存储结构,以回车符为结束标志,输入一 个任意长度的字符串,然后判断该字符串是否为“回文”(正向读和反向读时,串值相同的字符串称 为“回文”),输出信息“Yes”戒“NO”;最后删除字符串幵释放全部穸间。例如: 若输入“ABCD12321DCBA”是回文,则输出“Yes”; 若输入“ABCD123DCBA”,丌是回文,则输出“NO”。 要求:定义相关数据类型,丌得使用数组(顸序表)做字符串的存储结构和辅助存储空间。假定 字符串的长度为 n,试分析上述算法的时间复杂度。 【答案】算法如下: //本算法判断数据域为字符且长为 n 的单链表是否是”回文",迒回 1 戒 0 表示成功戒失败 //字符栈,容量足够大 //设链表带头结点 //前一半字符入栈,链表指针后移 //若链表有奇数个结点,则跳过中间结点 //丌是回文 37.假定用两个一维数组 L【N】和 R【N】作为有 N 个结点 1,2,…,N 的二叉树的存储结构。 和 分别指示结点 i 的左儿子和右儿子, )表示 i 的左(右)儿子为穸。试写一个 算法,由 L 和 R 建立一个一维数组 ,使 存放结点 i 的父亲;然后再写一个判别结点 u 是否 为结点 V 的后代的算法。 【答案】算法如下: 和 是含有 N 个元素且指示二叉树结点 i 左儿子和右儿子的一维数组 本算法据此建立结点 i 的双亲数组 T,并判断结点 U 是否是结点 V 的后代 T 数组初始化 若结点 i 的左子女是则结点 L 的 双亲是结点 i 若结点 i 的右子女是 R,则 R 的 双亲是 i 判断 U 是否是 V 的后代 考研与业课资料、辅导、答疑一站式服务平台 第 56 页,共 56 页
/
本文档为【2019年北京语言大学语言智能与技术825数据结构与程序设计之数据结构考研核心题库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索