数据结构试题及答案

合集下载

数据结构试题集(包含答案-完整版)

数据结构试题集(包含答案-完整版)

数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)1. 单选题1) 数据结构是一种()。

a) 存储结构b) 算法c) 数据模型d) 网络答案:c) 数据模型解析:数据结构是一种用于组织和存储数据的方式,描述了数据之间的关系以及对数据的操作。

2) 以下哪种数据结构可以通过索引直接访问元素?a) 链表b) 队列c) 栈d) 数组答案:d) 数组解析:数组是一种线性数据结构,可以通过索引直接访问指定位置的元素。

2. 多选题1) 哪些数据结构属于非线性结构?()a) 队列b) 树c) 栈d) 图答案:b) 树d) 图解析:线性结构中的元素存在一对一的关系,非线性结构中的元素存在一对多或多对多的关系,树和图属于非线性结构。

2) 下列哪些操作可以在栈上进行?()a) 入栈b) 出栈c) 查找d) 删除答案:a) 入栈b) 出栈解析:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。

3. 简答题1) 请简要介绍线性表和非线性表。

答案:线性表是数据元素的一个有限序列,元素之间存在一对一的关系。

非线性表是指元素之间存在一对多或多对多的关系,如树和图。

2) 请解释什么是时间复杂度和空间复杂度。

答案:时间复杂度是衡量算法执行效率的度量,表示算法的运行时间随输入规模增长的速度。

空间复杂度是指算法执行过程中所需的存储空间随输入规模增长的速度。

4. 编程题题目:实现一个栈,包含push、pop和getMin三个操作,要求时间复杂度为O(1)。

答案:class MinStack:def __init__(self):self.stack = []self.min_stack = []def push(self, x):self.stack.append(x)if not self.min_stack or x <= self.min_stack[-1]:self.min_stack.append(x)def pop(self):if self.stack.pop() == self.min_stack[-1]:self.min_stack.pop()def getMin(self):return self.min_stack[-1]解析:在栈的基础上,使用一个辅助栈min_stack来记录当前栈中的最小值。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案⼀、选择题(共10题,每题1分,共10分)1.下⾯关于线性表的叙述中,错误的是哪⼀个?()A.线性表采⽤顺序存储,必须占⽤⼀⽚连续的存储单元B.线性表采⽤顺序存储,便于进⾏插⼊和删除操作C.线性表采⽤链接存储,不必占⽤⼀⽚连续的存储单元D.线性表采⽤链接存储,便于插⼊和删除操作2.在⼀个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插⼊s所指结点,则执⾏的操作是()。

A. s->next=p->next;p->next=s;B. q->next=s;s->next=p;C. p->next=s->next;s->next=p;D. p->next=s;s->next=q;3.设有三个元素X,Y,Z顺序进栈,下列得不到的出栈排列是( )。

A.XYZ B. YZX C. ZXY D. ZYX4.若⽤⼀个长度为6的数组来实现循环队列,且当前rear和front的值分别为0和3,则从队列中删除⼀个元素,再增加两个元素后,rear和front的值分别是( )。

A.1和5 B.2和4 C.4和2 D. 5和15.下列说法中正确的是()。

A.⼆叉树就是度为2的树 B.⼆叉树中不存在度⼤于2的结点C.⼆叉树中⾄少有⼀个结点的度为2 D.⼆叉树中任何⼀个结点的度都为2 6.在具有n个结点的⼆叉链表中,共有()个空指针。

A. nB. n-1C. n+1D. 不确定7.根据⼆叉树与树的转换关系可知,深度为h的满⼆叉树对应的森林由()棵树构成。

A.1 B.log2n C. h/2 D. h8.在⼀个⽆向图中,所有顶点的度数之和等于所有边数的()倍。

A.1/2 B.1 C. 2 D. 49.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是()。

A.8,17 B.5,10,12 C.9,16 D.9,1710.关于排序,下列说法中正确的是()。

数据结构试题集(8套卷子+答案)

数据结构试题集(8套卷子+答案)

《数据结构》试卷一一、填空题:(共20分)1、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用存储结构。

2、队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是。

3、在一棵二叉树中,度为0的结点个数为n0,度为2的个数为n2,则n0= 。

4、二叉树的前序遍历序列等同于该二叉树所对应森林的遍历序列5、对一棵二叉排序树,若以遍历该树,将得到一个以关键字递增顺序排列的有序序列。

6、三个结点a,b,c组成二叉树,共有种不同的结构。

7、在AVL树中,由于在A结点的右孩子的右子树上插入结点,使A结点的平衡因子由-1变为-2,使其失去平衡,应采用型平衡旋转。

8、图的遍历有两种,它们是。

9、堆排序的时间复杂度为。

10、在含有N个结点的二叉链表中有空链域,通常用这些空链域存储线索,从而得另一种链式存储结构----线索链表。

二、单项选择题(共20分)1、若进栈序列为1,2,3,4,假定进栈和出栈可以穿插进行,则可能的出栈序列是()(A)2,4,1,3(B)3,1,4,2(C)3,4,1,2(D)1,2,3,42、有一棵非空的二叉树,(第0层为根结点),其第i层上最多有多少个结点?()(A)2i(B)21-i(C)21+i(D) i3、设电文中出现的字母为A,B,C,D,E,每个字母在电文中出现的次数分别为9,27,3,5,11,按huffman编码,则字母A编码为()(A)10(B)110(C)1110(D)11114、下面关于数据结构的叙述中,正确的叙述是()(A)顺序存储方式的优点是存储密度大,且插、删除运算效率高(B)链表中每个结点都恰好包含一个指针(C)包含n个结点的二叉排序树的最大检索长度为logn2(D)将一棵树转为二叉树后,根结点无右子树5、程序段:y:=0while n>=(y+1)*(y+1) doy:=y+1enddo的时间复杂度为()(A)O(n) (B)O(n2) (C)O(n2/1) (D)O(1)6、排序方法中,关键码比较的次数与记录的初始排列无关的是( )(A) shell排序 (B) 归并排序 (C) 直接插入排序 (D) 直接选择排序7、数组q[0..n-1]作为一个环行队列,f 为当前队头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数总小于n,则队列中元素个数为( )(A) r-f (B) n+f-r (C) n+r-f (D) (n+r-f) mod n8、为了有效的利用散列查找技术,需要解决的问题是:( )Ⅰ:找一个好的散列函数Ⅱ:设计有效的解决冲突的方法Ⅲ:用整数表示关键码值(A) Ⅰ和Ⅲ (B) Ⅰ和Ⅱ (C) Ⅱ和Ⅲ (D) Ⅰ,Ⅱ和Ⅲ9、引入线索二叉树的目的是()(A) 加快查找结点的前驱或后继的速度(B) 为了能在二叉树中方便的进行插入与删除(C) :为了能方便的找到双亲(D) 使二叉树的遍历结果唯一10、用二分(折半)查找表的元素的速度比用顺序法()(A) 必然快(B) 必然慢(C): 相等(D): 不能确定三、简答题:(共40分)1、已知某二叉树按中序遍历序列为BFDAEGC,按前序遍历序列为ABDFCEG,试画出该二叉树形状,并写出它的后序遍历序列。

数据结构试题(含答案)

数据结构试题(含答案)

数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。

2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。

A nB n/2C (n-1)/2D (n+1)/2?4、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。

A s→link = p→link;p→link = s;B p→link = s; s→link = q;C p→link = s→link;s→link = p;D q→link = s;s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。

A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。

A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。

所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。

)A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。

A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。

10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。

A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案一、选择题(每小题2分,共20分),每个题的备选答案中,只有一个是正确的,请将答案填写在试题的括号中。

1、对顺序存储的线性表,设其长度为20,在任何位置上插入或删除操作都是等概率的。

插入一个元素时平均要移动表中的()个元素。

A.10 B.9 C.11 D.122、若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表3、当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A.top++ B.top-- C.top = 0 D.top4、设入栈顺序为A,B,C,D,E,则出栈序列不可能是()。

A.EDCBA B.ABCDE C.ADEBC D.ABDEC5、已知关键字序列(46, 79, 56, 38, 40, 84),采用快速排序(以位于最左位置的关键字为基准)得到的第一次划分结果为:()A.{ 40, 38, 46, 56, 79, 84 } B.{ 38, 46, 79, 56, 40, 84 }C.{ 38, 46, 56, 79, 40, 84 } D.{ 40, 38, 46, 79, 56, 84 }6、一个有n个顶点和n条边的无向图一定是()。

A.不连通的B.连通的C.有环的D.无环的7、在一棵具有n个结点的二叉树的第i层上,最多具有()个结点。

A.2i B.2i-1 C.2i+1 D.2n8、对线性表采用折半查找法,该线性表必须()。

A.采用顺序存储结构B.采用顺序存储结构,且元素按值有序C.采用链式存储结构D.采用链式存储结构,且元素按值有序9、在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。

A.?(n-1)/2? B.?n/2? C.?n/2? D.?n/2? -110、在一个无向图中,所有顶点的度数之和等于所有边数的( ) 倍。

数据结构试题及答案(10套最新)

数据结构试题及答案(10套最新)

数据结构试题及答案(10套最新)数据结构试题及答案(10套最新)第一套试题:问题一:什么是数据结构?数据结构的作用是什么?回答:数据结构是一种组织和存储数据的方式,它关注数据元素之间的关系以及对数据元素的操作。

数据结构的作用包括提供高效的数据存储和访问方式,减少资源消耗,简化问题的解决方法,提高算法的性能和程序的可读性。

问题二:请列举几种常见的线性数据结构,并简要介绍它们的特点。

回答:常见的线性数据结构包括数组、链表和栈。

数组是一种连续存储数据元素的结构,具有随机访问的特点;链表是一种通过指针相连的数据元素,可以灵活地插入和删除元素;栈是一种遵循先进后出原则的数据结构,常用于解决递归问题。

问题三:请说明二叉树的定义及其性质。

回答:二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点。

二叉树具有以下性质:每个节点最多有两个子节点,分别称为左子节点和右子节点;左子树和右子树都是二叉树;二叉树的节点个数为n,边的个数为n-1。

问题四:在数组中查找一个元素的时间复杂度是多少?为什么?回答:在数组中查找一个元素的时间复杂度是O(n),其中n是数组的长度。

因为在数组中查找元素需要按照索引一个一个比较,最坏情况下需要比较n次才能找到目标元素。

问题五:请解释堆排序算法的原理及时间复杂度。

回答:堆排序算法利用堆这种数据结构进行排序。

首先将待排序的元素构建成一个大顶堆,然后将堆顶元素与最后一个元素交换,继续调整堆,再取出堆顶元素与倒数第二个元素交换,依次执行,最后得到从小到大排序的序列。

堆排序的时间复杂度为O(nlogn)。

第二套试题:问题一:请解释图的邻接矩阵和邻接表表示法。

回答:图的邻接矩阵表示法是使用二维数组来表示图的连接关系,数组中的元素表示相应节点之间的边的关系。

邻接表表示法使用链表来表示图的连接关系,链表中的元素表示相邻节点之间的边的关系。

问题二:请说明深度优先搜索算法的原理及其应用。

回答:深度优先搜索(DFS)算法是一种遍历或搜索图的算法,其原理是从起始节点开始,依次深入到尽可能远的节点,直到无法继续深入为止,然后回溯到上一个节点,再继续深入其他未访问过的节点。

数据结构试题及答案

数据结构试题及答案

一、判断题:1、线性表的逻辑顺序与物理顺序总是一致的。

( )2、线性表的顺序存储表示优于链式存储表示。

( )3、线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

( )4、二维数组是其数组元素为线性表的线性表。

( )5、每种数据结构都应具备三种基本运算:插入、删除和搜索。

( )6、数据结构概念包括数据之间的逻辑结构,数据在计算机中的存储方式和数据的运算三个方面。

( )7、线性表中的每个结点最多只有一个前驱和一个后继。

()8、线性的数据结构可以顺序存储,也可以链接存储。

非线性的数据结构只能链接存储。

()9、栈和队列逻辑上都是线性表。

()10、单链表从任何一个结点出发,都能访问到所有结点()11、删除二叉排序树中一个结点,再重新插入上去,一定能得到原来的二叉排序树。

()12、快速排序是排序算法中最快的一种。

()13、多维数组是向量的推广。

()14、一般树和二叉树的结点数目都可以为0。

()15、直接选择排序是一种不稳定的排序方法。

()16、98、对一个堆按层次遍历,不一定能得到一个有序序列。

()17、在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。

()18、折半搜索只适用与有序表,包括有序的顺序表和有序的链表。

()19、堆栈在数据中的存储原则是先进先出。

()20、队列在数据中的存储原则是后进先出。

()21、用相邻矩阵表示图所用的存储空间大小与图的边数成正比。

()22、哈夫曼树一定是满二叉树。

()23、程序是用计算机语言表述的算法。

()24、线性表的顺序存储结构是通过数据元素的存储地址直接反映数据元素的逻辑关系。

()25、用一组地址连续的存储单元存放的元素一定构成线性表。

()26、堆栈、队列和数组的逻辑结构都是线性表结构。

()27、给定一组权值,可以唯一构造出一棵哈夫曼树。

()28、只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。

数据结构试题(含答案)

数据结构试题(含答案)

数据结构试题(含答案)1.数据逻辑结构包括线性结构、树形结构和图状结构三种类型,树形结构和图状结构合称非线性结构2.数据的逻辑结构分为集合、线性结构、树形结构和图状结构4种。

3.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。

4.线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

5.在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没.6.数据结构的基本存储方法是顺序、链式、索引和散列存储。

有后续结点,其余每个结点的后续结点可以任意多个。

7.衡量一个算法的优劣主要考虑正确性、可读性、健壮性和时间复杂度与空间复杂度。

8.评估一个算法的优劣,通常从时间复杂度和空间复杂度两个方面考察。

9.算法的5个重要特性是有穷性、确定性、可行性、输入和输出。

10.在单链表中,要删除某一指定的结点,必须找到该结点的前驱结点。

11.在单链表中,要删除某一指定的结点,必须找到该结点的前驱结点。

12.在双链表中,每个结点有两个指针域,一个指向前驱结点,另一个指向后继结点。

13.在顺序表中插入或删除一个数据元素,需要平均移动n 个数据元素,移动数据元素的个数与位置有关14.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表的元素是,应采用顺序存储结构15.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成单链表和双链表。

16.顺序存储结构是通过下标表示元素之间的关系的;链式存储结构是通过指针表示元素之间的关系的17.带头结点的循环链表L中只有一个元素结点的条件是L->next->next=L18.栈是限定仅在表尾进行插入或删除操作的线性表,其运算遵循后进先出的原则。

19.空串是零个字符的串,其长度等于零。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构试题及答案数据结构试题(,)参考答案班别学号姓名成绩一、单项选择(每小题2分,共24分)1.若某线性表的常用操作是取第i个元素及其前趋元素,则采用( A )存储方式最节省时间A.顺序表B.单链表C.双链表D.单向循环B ) 2.串是任意有限个(A.符号构成的序列B.字符构成的序列C.符号构成的集合D.字符构成的集合3.设矩阵A(aij,1<=i,j<=10)的元素满足:aij<>0(i>=j,1<=i,j<=10),aij =0 (i<j,1<=i,j<=10) 若将A的所有非0元素以行为主序存于首地址为2000的存储区域中,每个元素占4个单元,则元素A[59]的首地址为( C )A.2340B.2336C.2220D.2160 4.如果以链表作为栈的存储结构,则退栈操作时( D )A.必须判别栈是否满干B.对栈不作任何判别C.判别栈元素的类型D.必须判别栈是否空5.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear 为队尾指针,则执行出队操作的语句为( A )A.front=(front+1)%(m+1)B.front=(front+1)% mC.rear=(rear+1)% mD. front=front+1 6.深度为6(根的层次为1)的二叉树至多有( B )结点A.64B.63C.31D.327.将含100个结点的完全二叉树从根这一层开始,每层从左至右依次对结点编号,根结点的编号为1。

编号为47的结点X的双亲的编号为( C )A.24B.25C.23D.2无法确定8.设有一个无向图G=(V,E)和G'=(V',E'),如果G'为G的生成树,则下面不正确的说法是( D )A.G'为G的子图B.G'为G的一个无环子图C.G'为G的极小连通子图且V'=VD.G'为G的连通分量19.用线性探测法查找闭散列上,可能要探测多个散列地址,这些位置上的键值( D )A.一定都是同义词B.一定都不是同义词C.都相同D.不一定都是同义词10.二分查找要求被查找的表是( C )A.键值有序的链接表B.链接表但键值不一定有序表C.键值有序的顺序表D.顺序表但键值不一定有序表11.当初始序列已经按键值有序,用直接插入法对其进行排序,需要比较的次数为( B )2 A. n B. n-1 C. logn D. nlogn 2212.堆是一个键值序列{K1,K2,...,Ki,...,Kn},对i=1,2,...,n/2 ,满足( A ) ? ?A. Ki<=K2i且Ki<=K2i+1(2i+1<=n)B.Ki<K2i<K2i+1C. Ki<=K2i或Ki<=K2i+1(2i+1<=n)D.Ki<=K2i<=K2i+1 二、判断题(正确的在括号内打"V",错的在括号内打"X",每小题1分,共10分) 1.双链表中至多只有一个结点的后继指针为空( V )2.在循环队列中,front指向队列中第一个元素的前一位置,rear指向实际的队尾元素,队列为满的条件是front=rear( X )3.对线性表进行插入和删除操作时,不必移动结点。

( X )4.队可以作为对树的层次遍历的一种数据结构。

( V )5.在一个有向图的拓朴序列中,若顶点a在顶点b之前,则图中必有一条弧<a,b>。

( X )6.对有向图G,如果从任一顶点出发进行一次深度优先或广度优先搜索就能访问每个顶点,则该图一定是完全图。

( X )7."二分查找法"必需在有序表上进行。

( V )8.向二叉排序树中插入一个新结点时,新结点一定成为二叉排序树的一个叶子结点。

( V ) 9.键值序列{A,C,D,B,E,E,F}是一个堆。

( X )10.在二路归并时,被归并的两个子序列中的关键字个数不一定相等。

( V )三、填空题(每空2分,共24分)1.设r指向单链表最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是 r->next=s ; r=s; r->next=NULL 。

2.在带头结点单链表L中,表空的条件是 L->next==NULL3.设一个链栈的栈顶指针为ls,栈中结点格式为 info?link ,栈空的条件是ls==NULL 。

若栈不空,则退栈操作为 p=ls; ls=ls->link ;free(p). 4.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树中有 12 个叶子结点。

25.树有三种常用的存储结构,即孩子链表法,孩子兄弟链表法和双亲表示法。

6.n-1个顶点的连通图的生成树有 n-2 条边。

7.一个有向图G中若有弧<Vj,Vi>、<Vi,Vk>和<Vj,Vk>,则在图G的拓朴序列中,顶点Vi,Vj和Vk的相对位置为 Vj->Vi->Vk 。

8.设表中元素的初始状态是按键值递增的,分别用堆排序、快速排序、冒泡排序和归并排序方法对其进行排序(按递增顺序),冒泡排序最省时间,快速排序最费时间。

9.下面是将键值为X的结点插入到二叉排序树中的算法,请在划线处填上适当的内容。

typedef struct node *pnodestruct node{ int key;right; pnode left,}void searchinsert(int x; pnode t);//t为二叉排序树根结点的指针//{ if( t=NULL ){ p=malloc(size); p->key=x; p->left=nil; p->right=nil; t=p;}else if (x<t->key) searchinsert(x,t->left)else searchinsert(x,t-> right) ;}四、应用题(本题共28分)1.给定权值{5,10,12,15,30,40},构造相应的哈夫曼树,要求写出构造步骤。

(4分) 哈夫曼树构造步骤:32.已知一表为(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec),按表中顺序依次插入初始为空的二叉排序树,要求:(1)在右边画出建立的二叉排序树。

(4分)(2)求出在等概率情况下查找成功的平均查找长度。

(2分)ASL =(1+2*2+3*3+4*3+5*2+6)/12=42/12=3.5 SU3.下图表示一个地区的交通网,顶点表示城市,边表示连结城市间的公路,边上的权表示修建公路花费的代价。

怎样选择能够沟通每个城市且总造价最省的n-1条公路,画出所有可能的方案.(4分)4.已知一个无向图的邻接表为:(本题4分,每小题2分)(1)画出这个图。

(2)以V1为出发点,对图进行广度优先搜索,写出所有可能的访问序列。

V1->V2->V4->V5->V3V1->V4->V2->V3->V545.设n个元素的有序表为R,K为一个给定的值,二分查找算法如下:int binsearch(sqlist R; keytype K:);{l=1; h=n; suc=false;while (l<=h)&&(!suc) do{ mid=(l+h)/2;caseK=R[mid].key: suc=true;K<R[mid].key: h=mid-1;K>R[mid].key: l=mid+1end }if (suc) return(mid) else return(0)}将上述算法中划线语句改为:K<R[mid].key: h=mid.问改动后,算法能否正常工作,请说明原因。

若能正常工作,请给出一个查找序列和查找某个键值的比较次数.(本题4分) 答:(1)若K在R中或大于R中的最大值,则算法能正常运行;若K不在R中或小于R中的最大值,则算法不能正常运行,会出现死循环;(2)如:在[2,4,6,8]中,当K=7时,算法出现死循环;当K=6时,算法能正常运行,查找成功,比较次数为2次。

6.有一组键值27,84,21,47,15,25,68,35,24,采用快速排序方法由小到大进行排序,请写出每趟的结果,并标明在第一趟排序过程中键值的移动情况。

(本题共6分) 答:(1)每趟的结果:(2)第一趟排序键值移动情况:5五、设计题(本题共14分)1.一棵二叉树以二叉链表为存储结构 lchild?data?rchild 。

设计一个算法,求在前序序列中处于第K个位置的结点。

(本题6分)类型定义如下:typedef struct node * pointer ; struct node{ datatype data ;pointer lchild, rchild ;}typedef pointer bitreptr ; 算法如下:void pre ( bitreptr t ; int k; bitreptr p ){ if ( t!=NULL ){ i=i+1;if ( i==k){ p=t; return(p);}pre(t->lchild, k,p ) ;pre(t->rchild, k,p ) ;}}2.某单链表L的结点结构为 data?next ,结点个数至少3个,试画出该链表的结构图,并编写算法判断该链表的元素是否成等差关系,即:设各元素值依次为a1,a2,...,an,判断ai+1-ai=ai-ai-1是否成立,其中i满足2<=i<=n-1。

(8分)结构图: (略)算法如下:int dcsl(lklist L){ p=L; q=p->next; r=q->next;while ( r!= NULL)if ((p->data)-(q->data) != (q->data)-(r->data)) return(0);else { p=q; q=r; r=r->next; }return(1);}67。

相关文档
最新文档