数据结构考试题8
《数据结构》期末考试试卷试题及答案
《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆3. 下面哪个数据结构用于实现深度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆4. 下面哪个数据结构用于实现快速排序算法?A. 栈B. 队列C. 散列表D. 堆5. 下面哪个数据结构用于实现优先队列?A. 栈B. 队列C. 散列表D. 堆6. 下面哪个数据结构用于实现哈希表?A. 栈B. 队列C. 散列表D. 堆7. 下面哪个数据结构用于实现最小树算法?A. 栈B. 队列C. 散列表D. 堆8. 下面哪个数据结构用于实现拓扑排序算法?A. 栈B. 队列C. 散列表D. 堆9. 下面哪个数据结构用于实现最短路径算法?A. 栈B. 队列C. 散列表D. 堆10. 下面哪个数据结构用于实现并查集算法?A. 栈B. 队列C. 散列表D. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。
2. 二叉树的节点最多有______个子节点。
3. 堆是一种特殊的______。
4. 散列表的查找效率取决于______。
5. 图的遍历算法包括______和______。
6. 快速排序算法的平均时间复杂度为______。
7. 哈希表中的冲突解决方法有______和______。
8. 最小树算法包括______和______。
9. 最短路径算法包括______和______。
10. 并查集算法用于解决______问题。
第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。
2. 请简述二叉搜索树的特点。
3. 请简述哈希表的原理。
4. 请简述图的深度优先搜索算法。
5. 请简述最小树算法的原理。
第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。
最新《数据结构》试题及答案(10套)
一、单选题(每题 2 分,共20分)1. 1.对一个算法的评价,不包括如下(B)方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行(A )。
A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3. 3.对线性表,在下列哪种情况下应当采用链表表示?( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35. 5.AOV网是一种(D)。
A.有向图B.无向图C.无向无环图D.有向无环图6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度(B)。
A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.7.若需要利用形参直接访问实参时,应将形参变量说明为(D)参数。
A.值B.函数C.指针D.引用8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的(A)。
A.行号B.列号C.元素值D.非零元素个数9.9.快速排序在最坏情况下的时间复杂度为(D)。
A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2)10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。
A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1. 1.数据结构是指数据及其相互之间的______________。
当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。
数据结构试题集(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,试画出该二叉树形状,并写出它的后序遍历序列。
数据结构试题库及答案
数据结构试题库及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用()来存储。
A. 链表B. 栈C. 队列D. 数组答案:D2. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C3. 在二叉树的遍历算法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。
A. 先序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法不包括以下哪种?A. 链地址法B. 线性探测法C. 二分查找法D. 再散列法答案:C5. 在图的遍历算法中,广度优先搜索(BFS)使用的辅助数据结构是()。
A. 栈B. 队列C. 堆D. 链表答案:B6. 下列关于堆的描述中,错误的是()。
A. 堆是一种特殊的完全二叉树B. 堆中的每个节点的值都大于其子节点的值C. 堆可以用于实现优先队列D. 堆的插入操作的时间复杂度为O(log n)答案:B7. 在一个长度为n的数组中,使用二分查找算法查找一个元素的最坏情况下的时间复杂度是()。
A. O(1)B. O(n)C. O(n^2)D. O(log n)答案:D8. 以下哪个数据结构不是线性结构?A. 链表B. 栈C. 队列D. 二叉树答案:D9. 以下哪个算法是动态查找表?A. 直接索引B. 顺序查找C. 二分查找D. 哈希表答案:D10. 在图的表示方法中,邻接矩阵表示法的缺点是()。
A. 占用空间大B. 占用空间小C. 插入和删除操作复杂D. 遍历操作复杂答案:A二、填空题(每题2分,共20分)1. 在一个长度为n的数组中,使用顺序查找算法查找一个元素的时间复杂度为________。
答案:O(n)2. 一个具有n个节点的完全二叉树的高度为________。
答案:log2(n) + 1(向上取整)3. 一个长度为n的链表,删除一个节点的时间复杂度为________。
答案:O(1)4. 在图的表示方法中,邻接表表示法的缺点是________。
大学计算机《数据结构》试卷及答案(八)
大学计算机《数据结构》试卷及答案一、选择题(30分)1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。
(A) O(n) (B) O(nlog2n) (C) O(1) (D) O(n2)2.设一棵二叉树的深度为k,则该二叉树中最多有()个结点。
(A) 2k-1 (B) 2k(C) 2k-1(D) 2k-13.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为()。
(A) n (B) e (C) 2n (D) 2e4.在二叉排序树中插入一个结点的时间复杂度为()。
(A) O(1) (B) O(n) (C) O(log2n) (D) O(n2)5.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。
(A) n (B) n-1 (C) m (D) m-16.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。
(A) 3 (B) 4 (C) 5 (D) 87.设用链表作为栈的存储结构则退栈操作()。
(A) 必须判别栈是否为满(B) 必须判别栈是否为空(C) 判别栈元素的类型(D) 对栈不作任何判别8.下列四种排序中()的空间复杂度最大。
(A) 快速排序(B) 冒泡排序(C) 希尔排序(D) 堆9.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是()。
(A) N0=N1+1 (B) N0=N l+N2(C) N0=N2+1 (D) N0=2N1+l10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。
(A) log2n+1 (B) log2n-1 (C) log2n (D) log2(n+1)二、填空题(42分)1.设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________。
数据结构与算法 模拟试卷七、八及参考答案
模拟试卷七一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内。
每小题1分,共10分)1.假设执行语句S的时间为O(1),则执行下列程序段for(i=1;i<=n;i++)for(j=i;j<=n;j++)S;的时间为( )A)O(n)B)O(n2)C)O(n*i)D)O(n+i)2.设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能的出栈序列是()。
A)1,2,3,4,5,6 B)2,1,3,4,5,6C)3,4,2,1,5,6 D)4,3,2,1,5,63.设单链表的结点结构为(data,next),已知指针q所指结点是指针p所指结点的直接前驱,如在*q与*p之间插入结点*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;4.串S='ABC DEF'的串长为()。
A)3 B)4C)7 D)85.下面二叉树按()遍历得到的序列是FEDBIHGCA。
A)先序B)中序C)后序D)层次6.用Floyd算法求每一对顶点之间的最短路径的时间复杂度为()。
A)O(n) B)O(n2)C)O(n3) D)O(nlogn)7.具有n个顶点的无向图,它可能具有的边数的最大值为()。
A)(n2+n)/2 B)n2C)(n2-n)/2 D)n8.二分查找法要求被查找的表是()。
A)顺序表B)链接表C)顺序表且是按值递增或递减次序排列D)不受上述的任何限制9.在一待散列存储的线性表(18,25,63,50,42,32,90),若选用h(k)=k % 7作为散列函数,则与元素18冲突的元素有( )个。
A)0 B)1C)2 D)310.在下列排序算法中,不稳定的是()。
数据结构含答案
数据构造综合练习一、选择题1.数据的存储构造包括顺序、、散列和〔〕4种根本类型。
A索引 B数组 C集合 D向量2.下面程序的时间复杂性的量级为〔〕。
int i=0,s1=0,s2=0;while〔i++<n〕{if (i%2)s1+=i;else s2+=i;}A.O(1)B.O(1bn)C.O〔n〕D.O(2n)3.下面程序段的时间复杂度为〔〕。
for(int i=0;i<m;i++)for(int j=0;j<n;j++)a[i][j]=i*j;A.O(m2)B.O(n2)C.O(m+n)D.O(m*n)4.在一个长度为n的顺序存储构造的线性表中,向第i个元素〔1≤ i≤n+1〕位置插入一个元素时,需要从后向前依次后移〔〕个元素。
A.n-iB.n-i+lC.n-i-lD.i5.在一个长度为n的顺序存储构造的线性表中,删除第i个元素〔1≤i≤n+1〕时,需要从前向后依次后移〔〕个元素。
A.n-iB.n-i+lC.n-i-lD.i6.在一个长度为n的线性表中,删除值为*的元素时需要比拟元素和移动元素的总次数为〔〕。
A.(n+1)/2B.n/2C.nD.n+17.在一个顺序表中的任何位置插入一个元素的时间复杂度为〔〕。
A. O(n)B. O(n/2)C. O(1)D. O(n2)8. 线性表的链式存储比顺序存储更有利于进展〔〕操作。
A.查找B.表尾插入和删除C.按值插入和删除D.表头的插入和删除9. 线性表的顺序存储比链式存储更有利于进展〔〕操作。
A.查找B.表尾插入和删除C.按值插入和删除D.表头的插入和删除10. 在一个表头指针为ph的单链表中,假设要向表头插入一个由指针p指向的结点,则应执行〔〕操作。
A. ph=p; p->ne*t=ph;B. p->ne*t=ph; ph=p;C. p->ne*t=ph; p=ph;D. p->ne*t=ph->ne*t; ph->ne*t=p;11. 在一个表头指针为ph的单链表中,假设要在指针q所指结点的后面插入一个由指针p 所指向的结点,则执行〔〕操作。
计算机专业基础综合(数据结构)模拟试卷8(题后含答案及解析)
计算机专业基础综合(数据结构)模拟试卷8(题后含答案及解析) 题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.若某线性表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则下面最节省运算时间的存储方式是( )。
A.单链表B.带有头指针的单循环链表C.双链表D.带有尾指针的单循环链表正确答案:D解析:在链表中的最后一个结点之后插入一个结点要知道终端结点的地址,所以,单链表、带有头指针的单循环链表、双链表都不合适。
考虑在带有尾指针的单循环链表中删除第一个结点,其时间性能是O(1),所以答案是D。
知识模块:数据结构2.已知两个长度分别为l和s的降序链表,若将它们合并为一个长度为l+s 的升序链表,则最坏情况下的时间复杂度是( )。
A.D(l)B.D(ls)C.D(min(l,s))D.D(max(l,s))正确答案:D解析:在合并过程中,最坏的情况是两个链表中的元素依次进行比较,比较的次数最少是m和n中的最大值。
知识模块:数据结构3.线性表中存放的主要是( )。
A.整型常量B.字符C.数据元素D.信息元素正确答案:C解析:线性表中主要存放的是数据元素,而数据元素可以是整型也可以是字符型,但对于一个线性表来说,所有的数据元素的类型必须相同。
知识模块:数据结构4.下面的叙述中正确的是( )。
I.线性表在链式存储时,查找第i个元素的时间同i的值成正比Ⅱ.线性表在链式存储时,查找第i个元素的时间同i的值无关Ⅲ.线性表在顺序存储时,查找第i个元素的时间同i的值成正比A.仅ⅠB.仅ⅡC.仅ⅢD.Ⅰ、Ⅱ、Ⅲ正确答案:A解析:在线性表链式存储结构中,查找第i个元素的时间与i的位置成正比。
而在顺序存储结构中查找第i个元素的时间与i的位置无关。
知识模块:数据结构5.对于某线性表来说,主要的操作是存取任一指定序号的元素和在最后进行插入运算,那么应该选择( )存储方式最节省时间。
数据结构与算法试卷及答案8
广州大学学年第学期考试卷课程数据结构与算法考试形式(闭卷,考试)信息学院系专业级班学号:姓名:一、填空题:(每格2分,共20分)1.以{5,6,8,10,15}作为叶子结点的权值所构造的哈夫曼树的带权路径长度是。
2.判断一个无向图是一棵树的条件是。
3.设n0为哈夫曼树的叶子结点数目,则该哈夫曼树共有个结点。
4.一个无序序列可以通过构造一棵树而变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。
5.如果结点A有 3个兄弟,而且B是A的双亲,则B的度是。
6.设有向图有n个顶点和e条边,进行拓扑排序时,总的时间复杂度为7.在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序记录的恰当位置,该排序方法叫。
8.用一维数组存放的一棵完全二叉树;ABCDEFGHIJKL。
后序遍历该二叉树的访问结点序列是。
9.设散列函数H(k)=K mod 7,散列表的地址空间为0—6,则关键字为32的元素在哈希表中的下标为。
10.一棵非空二叉树的先序序列和后序序列正好相反,则树的形状是。
二、单项选择题(每题1分,共10分)1.()设一个栈的输入序列是1,2,3,4,5 则下列序列中,是栈的合法输出序列的是:A. 5 1 2 3 4B. 4 5 1 3 2C. 4 3 1 2 5D. 3 2 1 5 42.()在图采用邻接表存储时,求最小生成树的prim 算法的时间复杂度为A. O(n)B. O(n+e)C. O(n2)D. O(n3)3.()下列排序算法中,哪种算法不能保证每趟排序至少能将一个元素放到其最终的位置上?A.快速排序B. shell排序C. 堆排序D. 冒泡排序4.()一棵非空的二叉排序树在先序线索化后,其中值为空的链域的个数是:A.不确定B. 0C. 1D. 25()对于线性表最常用的操作是查找指定序号的元素和在末尾插入元素,则选择哪种最节省时间?A.顺序表 B. 单链表C带头接点的双循环链表D带尾接点的单循环链表6()求解最短路径的Floyd算发的时间复杂度为:A.O(n) B. O(n+c) C. O(n2) D. O(n3)7()数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算发中哪种算法的两趟排序后的结果?A.选择排序 B 冒泡排序 C 插入排序 D 堆排序8()下列序列中,哪个是堆?A.(100,80,55,60,50,40,58,35,20)B.(100,80,55,60,50,40,35,58,20)C.(100,80,55,58,50,40,60,35,20)D.(100,70,55,60,50,40,58,35,20)9()一棵左子树为空的二叉树在先序线索化后,其中空的链域的个数是:A.不确定 B 0 C 1 D 210()算术表达式A+B*(C+D/E)转为后缀表达式后为:A:AB+CDE/*B:ABCDE/+*+C:ABCDE/*++D:ABCDE*/++三、判断题(在括号内填上“√”或“╳”,每题1分,共10分,做错不倒扣)1.()线性表的特点是每个元素都有一个前驱和一个后继。
数据结构_习题集
习 题 3 一、选择题
1在栈顶一端可进行的全部操作是( C)。 A 插入 B 删除 C插入和删除 2 栈的特点是(B )。 A 先进先出 B 后进先出 3 顺序栈是空栈的条件是( A)。 A top==0 B top==1 C top== -1 C后进后出 D进栈 D不进一个栈,top表示栈顶指针,已知栈未满, 则x入栈时所执行的操作是( D)。 A a[--top]=x; B a[top--]=x C a[++top]=x D a[top++]=x 5 一个栈的入栈序列是a,b,c,d,e,则不可能的出栈序列是( B)。 A edcda B dceab C decba D abcde 6 经过下列栈的运算后EmptyStack(s)的值是(C )。 InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,x) ?????????? Aa Bb C1 D0
数据结构习题册 基 础 篇
习 题 1 一、选择题
1 计算机算法必须具备输入、输出、( B)等5个特性。 A 可行性、可移植性和可扩展性 B 可行性、确定性和有穷性 C 确定性、有穷性和稳定性 D 易读性、安全性和稳定性 2 在数据结构中,从逻辑上可以把数据结构分为(D) A 动态结构和静态结构 B 紧凑结构和非紧凑结构 C 内容结构和外部结构 D 线性结构和非线性结构 3 下面程序段的时间复杂性的量级为( D) For (i=1;i<=n;i++) For(j=1;j<=I;j++) For(k=1;k<=j;k++) x=x+1; A O(1) B O(n) C O(n2) D O(n3) 4 在数据结构中,与所使用的计算机无关的是数据的(A )结构 A 逻辑 B 存储 C 逻辑和存储 D 物理 5 数据结构在计算机中的表示是指(C ) A 数据的逻辑结构 B 数据结构 C 数据的存储结构 D 数据元素之间 的关系 6 下面(B )的时间复杂性最好,即执行时间最短。 A O(n) B O(logn) C O(nlogn) D O(n2) 7 下面程序段的时间复杂性的量级为(D )。 Int fun(int n){ I=1,s=1;
数据结构单元8练习参考答案
单元练习8一.判断题〔以下各题,正确的请在前面的括号内打√;错误的打╳〕〔√〕〔1〕图可以没有边,但不能没有顶点。
〔ㄨ〕〔2〕在无向图中,〔V1,V2〕与〔V2,V1〕是两条不同的边。
〔ㄨ〕〔3〕邻接表只能用于有向图的存储。
〔√〕〔4〕一个图的邻接矩阵表示是唯一的。
〔ㄨ〕〔5〕用邻接矩阵法存储一个图时,所占用的存储空间大小与图中顶点个数无关,而只与图的边数有关。
〔ㄨ〕〔6〕有向图不能进展广度优先遍历。
〔√〕〔7〕假设一个无向图的以顶点V1为起点进展深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。
〔√〕〔8〕存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的上三角〔或下三角〕局部就可以了。
〔ㄨ〕〔9〕用邻接表法存储图时,占用的存储空间大小只与图中的边数有关,而与结点的个数无关。
〔√〕〔10〕假设一个无向图中任一顶点出发,进展一次深度优先遍历,就可以访问图中所有的顶点,则该图一定是连通的。
二.填空题(1)图常用的存储方式有邻接矩阵和邻接表等。
(2)图的遍历有:深度优先搜和广度优先搜等方法。
(3)有n条边的无向图邻接矩阵中,1的个数是_2n____。
(4)有向图的边也称为_ 弧___。
(5)图的邻接矩阵表示法是表示__顶点____之间相邻关系的矩阵。
(6)有向图G用邻接矩阵存储,其第i行的所有元素之和等于顶点i的__出度____。
(7)n个顶点e条边的图假设采用邻接矩阵存储,则空间复杂度为: O〔n2〕。
(8)n个顶点e条边的图假设采用邻接表存储,则空间复杂度为: O〔n+e〕。
(9)设有一稀疏图G,则G采用_邻接表____存储比拟节省空间。
(10)设有一稠密图G,则G采用_邻接矩阵____存储比拟节省空间。
(11)图的逆邻接表存储构造只适用于__有向____图。
(12) n个顶点的完全无向图有 n(n-1)/2_ 条边。
(13)有向图的邻接表表示适于求顶点的出度。
(14)有向图的邻接矩阵表示中,第i列上非0元素的个数为顶点V i的入度。
数据结构第8章 查找 答案
第8章 查找 测试题 及答案一、填空题1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。
2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。
设有100个结点,用二分法查找时,最大比较次数是 7 。
3. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ;平均查找长度为 3.7 。
解:显然,平均查找长度=O (log 2n )<5次(25)。
但具体是多少次,则不应当按照公式)1(log 12++=n nn ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。
因为这是在假设n =2m -1的情况下推导出来的公式。
应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!!4.【计研题2000】折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 比较大小。
5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。
6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。
7. 有一个表长为m 的散列表,初始状态为空,现将n (n<m )个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。
如果这n 个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2=( 1+2+…+n-1) 。
(而任一元素查找次数 ≤n-1)二、单项选择题( B )1.在表长为n的链表中进行线性查找,它的平均查找长度为A. ASL=n; B. ASL=(n+1)/2;C. ASL=n +1; D. ASL≈log2(n+1)-1( A )2.折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
数据结构考试试题
一、单项选择题(共40分,每题2分)1.树形结构是数据元素之间存在一种( D )。
A.一对一关系B.多对多关系C.多对一关系D.一对多关系2.设语句x++的时间是单位时间,则以下语句的时间复杂度为( B )。
for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O(2n)C.O(n)D.O(3n)3.线性表是(A)。
A.一个有限序列,可以为空B.一个有限序列,不可以为空C.一个无限序列,可以为空D.一个无限序列,不可以为空4. 在顺序表中,只要知道(D),就可在相同时间内求出任一结点的存储地址。
A.基地址B.结点大小C.向量大小D.基地址和结点大小5.设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列(C)。
A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A6.一个子串在包含它的主串中的位置是指( D )。
A.子串的最后那个字符在主串中的位置B.子串的最后那个字符在主串中首次出现的位置C.子串的第一个字符在主串中的位置D.子串的第一个字符在主串中首次出现的位置7.已知二维数组A10×10中,元素a20的地址为560,每个元素占4个字节,则元素a10的地址为(A )。
A.520B.522C.524D.5188.假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为(B )个。
A. 15B. 16C. 17D. 479.在一棵二叉树上第4层的结点数最多为(D )。
A. 2B. 4C. 6D. 810.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为(B )。
A. 1B. 2C. 3D. 411.下面叙述正确的是(D )。
A. 二叉树是特殊的树B. 二叉树等价于度为2的树C. 完全二叉树必为满二叉树D. 二叉树的左右子树有次序之分12.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的入度数之和为( A )。
数据结构第八章习题及答案
习题八查找一、单项选择题1.顺序查找法适合于存储结构为( )的线性表。
A. 散列存储 B、顺序存储或链式存储C、压缩存储D、索引存储2、若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。
A. (n-1)/2 B、 n/2 C、 (n+1)/2 D、 n3.适用于折半查找的表的存储方式及元素排列要求为( )A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序4.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )A.必定快 B、不一定 C、在大部分情况下要快 D、取决于表递增还就是递减5.当采用分块查找时,数据的组织方式为 ( )A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C、数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D、数据分成若干块,每块(除最后一块外)中数据个数需相同6.二叉树为二叉排序树的充分必要条件就是其任一结点的值均大于其左孩子的值、小于其右孩子的值。
这种说法( )。
A.正确 B、错误7、二叉查找树的查找效率与二叉树的((1) )有关, 在 ((2) )时其查找效率最低。
(1): A、高度 B、结点的多少 C、树型 D、结点的位置(2): A、结点太多 B、完全二叉树 C、呈单枝树 D、结点太复杂。
8.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用( )查找法。
A、分快查找B、顺序查找C、折半查找D、基于属性9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的就是( )。
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)10.下图所示的4棵二叉树,( )就是平衡二叉树。
(完整版)数据结构试题及答案
数据结构试卷(一)王彬一、单选题(每题2 分,共20分)1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中哪一个是非线性结构?( )A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
cA.688 B.678 C.692 D.6965.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( d ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为A. O(1)B. O(n)C. O(1og2n)D. O(n2)9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( c d)个,A.1 B.2 C.3 D.410.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5B.6C.7D.8二、填空题(每空1分,共26分)1.通常从四个方面评价算法的质量:____ ____、________、________和_______。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
数据结构考试题及答案详解
数据结构考试题及答案详解一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用哪种数据结构实现?A. 链表B. 数组C. 栈D. 队列答案:B2. 下列哪个是二叉树的遍历算法?A. 深度优先搜索B. 广度优先搜索C. 排序算法D. 查找算法答案:A3. 哈希表解决冲突最常用的方法是?A. 链接法B. 线性探测法C. 二次探测法D. 所有选项都是答案:D4. 栈的后进先出(LIFO)特性决定了它不能用于实现哪些数据结构?A. 队列B. 堆C. 树D. 图答案:A5. 快速排序算法的时间复杂度在最坏情况下是?A. O(n log n)B. O(n^2)C. O(n)D. O(1)答案:B二、简答题(每题10分,共30分)1. 什么是递归?请给出一个递归函数的例子。
答案:递归是一种在函数内部调用自身的编程技术。
递归函数通常有两个条件:一个基本情况(base case),用于停止递归调用;一个递归情况(recursive case),用于进行递归调用。
例如,计算阶乘的递归函数如下:```cint factorial(int n) {if (n == 0) return 1; // 基本情况return n * factorial(n - 1); // 递归情况}```2. 什么是图的深度优先搜索(DFS)?请简述其基本思想。
答案:深度优先搜索是一种遍历图的算法,它从一个顶点开始,沿着一条路径尽可能深地搜索,直到无法继续为止,然后回溯并沿着另一条路径继续搜索。
基本思想是使用一个栈来记录已访问的顶点,以避免重复访问。
3. 什么是平衡二叉搜索树?请列举至少两种常见的平衡二叉搜索树。
答案:平衡二叉搜索树是一种特殊的二叉搜索树,它保持树的高度尽可能低,以保证操作的效率。
常见的平衡二叉搜索树有AVL树和红黑树。
AVL树通过旋转操作保持平衡,红黑树通过颜色和旋转操作来保持平衡。
三、计算题(每题25分,共50分)1. 给定一个数组A,包含n个元素,请计算其归并排序的时间复杂度,并给出排序过程的一个示例。
数据结构模拟试题(8)
一.单选题1.数据结构是()A.一种数据类型B.数据的存储结构C.一组性质相同的数据元素的集合D.相互之间存在一种或多种特定关系的数据元素的集合2.算法分析的目的是()A.辨别数据结构的合理性B. 评价算法的优劣C.研究算法中输入与输出的关系D.鉴别算法的可读性3.在线性表的下列运算中,不改变数据元素之间结构关系的运算是()A.插入B.删除C.排序D.定位4.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()A.3,2,6,1,4,5 B.3,4,2,1,6,5C.1,2,5,3,4,6 D.5,6,4,2,3,15.设串sl=”Data Structures with C++”,s2=”it”,则子串定位函数index(s1,s2)的值为()A.15 B.16C.17 D.186.广义表A=(a,(b),(),(c,d,e))的长度为( )A.4 B.5C.6 D.77.一棵含18个结点的二叉树的高度至少为( )A.3 B.4C.5 D.68..已知二叉树的先序序列为ABDECF,中序序列为DBEAFC,则后序序列为( ) A.DEBAFC B.DEFBCAC.DEBCFA D.DEBFCA9.无向图中一个顶点的度是指图中( )A.通过该顶点的简单路径数B.与该顶点相邻接的顶点数C.通过该顶点的回路数D.与该顶点连通的顶点数10.已知一个图如下所示,从顶点a出发进行广度优先遍历可能得到的序列为( )A.a c e f b d B.a c b d f eC.a c b d e f D.a c d b f e11.在下列排序方法中,平均时间性能为O(nlogn)且空间性能最好的是( )A.快速排序B.堆排序C.归并排序D.基数排序12.已知一组关键字为{25,48,36,72,79,82,23,40,16,35},其中每相邻两个为有序子序列。
对这些子序列进行一趟两两归并的结果是( )A.{25,36,48,72,23,40,79,82,16,35}B.{25,36,48,72,16,23,40,79,82,35}C.{25,36,48,72,16,23,35,40,79,82}D.{16,23,25,35,36,40,48,72,79,82}13.设顺序存储的线性表共有123个元素,按分块查找的要求等分成3块。
计算机学科专业基础综合数据结构-8_真题-无答案
计算机学科专业基础综合数据结构-8(总分100,考试时间90分钟)单项选择题1. 若对序列(tang,deng,an,wang,shi,bai,fang,liu)采用简单选择排序法按字典顺序进行排序,下面给出的四个序列中,第三趟的结果是______。
A. an,bai,deng,wang,tang,fang,shi,liuB. an,bai,deng,wang,shi,tang,fang,liuC. an,bai,deng,wang,fang,shi,tang,liuD. an,bai,deng,wang,shi,liu,tang,fang2. 每次从排序记录中挑出最小(或最大)的关键字,加入到待排序序列的末尾,则该排序算法是______。
A. 选择排序B. 快速排序C. 冒泡排序D. 插入排序3. 一组记录的序列F={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}4. 下列排序算法中,______算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。
A. 堆排序B. 快速排序C. 冒泡排序D. 希尔排序5. 以下排序方法中,不需要进行关键字的比较的是______。
A. 快速排序B. 归并排序C. 基数排序D. 堆排序6. 直接插入排序在最好情况下的时间复杂度为______。
A. O(n)B. O(nlogn)C. O(logn)D. O(n2)7. 设有1000个无序元素,希望用最快的速度挑选出前10个最大的元素,最好选用______法。
A. 冒泡排序B. 快速排序C. 堆排序D. 基数排序8. 下面四种排序算法中,不是稳定排序的是______。
A. 冒泡排序B. 快速排序C. 堆排序D. 基数排序9. 就平均性能而言,目前最好的排序算法是______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。
每张答题纸都要写上姓名和学号。
一、单项选择题(选择最准确的一项,共15小题,每小题2分,共计30分)1. 数据结构是指。
A. 一种数据类型B. 数据的存储结构C. 一组性质相同的数据元素的集合D. 相互之间存在一种或多种特定关系的数据元素的集合2. 以下算法的时间复杂度为。
void fun(int n){ int i=1,s=0;while (i<=n){ s+=i+100; i++; }}A. O(n)B. O(n)C. O(nlog2n)D. O(log2n)3. 在一个长度为n的有序顺序表中删除其中第一个元素值为x的元素时,在查找元素x时采用二分查找方法,此时删除算法的时间复杂度为。
A. O(n)B. O(nlog2n)C. O(n2)D. O(n)4. 若一个栈采用数组s[0..n-1]存放其元素,初始时栈顶指针为n,则以下元素x进栈的正确操作是。
A.top++;s[top]=x;B.s[top]=x;top++;C.top--;s[top]=x; B.s[top]=x;top--;5. 设环形队列中数组的下标为0~N-1,其队头、队尾指针分别为front和rear(front 指向队列中队头元素的前一个位置,rear指向队尾元素的位置),则其元素个数为。
A. rear-frontB. rear-front-1C. (rear-front)%N+1D. (rear-front+N)%N6. 若用一个大小为6的数组来实现环形队列,队头指针front指向队列中队头元素的前一个位置,队尾指针rear指向队尾元素的位置。
若当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为。
A. 1和5B. 2和4C. 4和2D. 5和17. 一棵高度为h(h≥1)的完全二叉树至少有个结点。
A. 2h-1B. 2hC. 2h+1D. 2h-1+18. 设一棵哈夫曼树中有999个结点,该哈夫曼树用于对个字符进行编码。
A. 999B. 499C. 500D. 5019. 一个含有n个顶点的无向连通图采用邻接矩阵存储,则该矩阵一定是。
A. 对称矩阵B. 非对称矩阵C. 稀疏矩阵D. 稠密矩阵10. 设无向连通图有n个顶点e条边,若满足,则图中一定有回路。
A. e≥nB. e<n-1C. e=n-1D. 2e≥n11. 如果从无向图的任一顶点出发进行一次广度优先遍历即可访问所有顶点,则该图一定是。
A.完全图B.连通图C.有回路D.一棵树12. 设有100个元素的有序表,用折半查找时,不成功查找时最大的比较次数是。
A. 25B. 50C. 10D. 713. 从100个元素确定的顺序表中查找其中某个元素(关键字为正整数),如果最多只进行5次元素之间的比较,则采用的查找方法只可能是。
A.折半查找B.顺序查找C.哈希查找D.二叉排序树查找14. 有一个含有n(n>1000)个元素数据序列,某人采用了一种排序方法对其按关键字递增排序,该排序方法需要关键字比较,其平均时间复杂度接近最好的情况,空间复杂度为O(1),该排序方法可能是。
A.快速排序B.堆排序C.二路归并排序D.都不适合15. 对一个线性序列进行排序,该序列采用单链表存储,最好采用排序方法。
A.直接插入排序B.希尔排序C.快速排序D.都不适合二、问答题(共3小题,每小题10分,共计30分)1. 如果对含有n(n>1)个元素的线性表的运算只有4种:删除第一个元素;删除最后一个元素;在第一个元素前面插入新元素;在最后一个元素的后面插入新元素,则最好使用以下哪种存储结构,并简要说明理由。
(1)只有尾结点指针没有头结点指针的循环单链表(2)只有尾结点指针没有头结点指针的非循环双链表(3)只有头结点指针没有尾结点指针的循环双链表(4)既有头结点指针也有尾结点指针的循环单链表2. 对于一个带权连通无向图G,可以采用Prim算法构造出从某个顶点v出发的最小生成树,问该最小生成树是否一定包含从顶点v到其他所有顶点的最短路径。
如果回答是,请予以证明;如果回答不是,请给出反例。
3. 有一棵二叉排序树按先序遍历得到的序列为:(12,5,2,8,6,10,16,15,18,20)。
回答以下问题:(1)画出该二叉排序树。
(2)给出该二叉排序树的中序遍历序列。
(3)求在等概率下的查找成功和不成功情况下的平均查找长度。
三、算法设计题(共3小题,共计40分)1.(15分)假设二叉树b采用二叉链存储结构,设计一个算法void findparent(BTNode *b,ElemType x,BTNode *&p)求指定值为x的结点的双亲结点p。
提示,根结点的双亲为NULL,若在二叉树b中未找到值为x的结点,p亦为NULL。
2. (10分)假设一个有向图G采用邻接表存储。
设计一个算法判断顶点i和顶点j(i ≠j)之间是否相互连通,假设这两个顶点均存在。
3.(15分)有一个含有n个整数的无序数据序列,所有的数据元素均不相同,采用整数数组R[0..n-1]存储,请完成以下任务:(1)设计一个尽可能高效的算法,输出该序列中第k(1≤k≤n)小的元素,算法中给出适当的注释信息。
提示:利用快速排序的思路。
(2)分析你所设计的求解算法的平均时间复杂度,并给出求解过程。
“数据结构”考试试题(A)参考答案要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。
每张答题纸都要写上姓名和学号。
一、单项选择题(共15小题,每小题2分,共计30分)1.D2.B3.A4. C5. D6. B7. A8. C9. A 10. A11. B 12. D 13.C 14.B 15.A二、问答题(共3小题,每小题10分,共计30分)1. 答:本题答案为(3),因为实现上述4种运算的时间复杂度均为O(1)。
2. 答:不是。
如图1所示的图G从顶点0出发的最小生成树如图2所示,而从顶点0到顶点的2的最短路径为02,而不是最小生成树中的012。
图1 一个带权连通无向图G 图2 图G的一棵最小生成树3. 答:(1)先序遍历得到的序列为:(12,5,2,8,6,10,16,15,18,20),中序序列是一个有序序列,所以为:(2,5,6,8,10,12,15,16,18,20),由先序序列和中序序列可以构造出对应的二叉树,如图3所示。
4分(2)中序遍历序列为:2,5,6,8,10,12,15,16,18,20。
4分(3)ASL成功=(1×1+2×2+4×3+3×4)/10=29/10。
1分ASL不成功=(5×3+6×4/11=39/11。
1分图3三、算法设计题(共3小题,共计40分)1.(15分)解:算法如下:void findparent(BTNode *b,ElemType x,BTNode *&p){ if (b!=NULL){ if (b->data==x) p=NULL;else if (b->lchild!=NULL && b->lchild->data==x)p=b;else if (b->rchild!=NULL && b->rchild->data==x)p=b;else{ findparent(b->lchild,x,p);if (p==NULL)findparent(b->rchild,x,p);}}else p=NULL;}2. (10分)解:算法如下:int visited[MAXV];void DFS(ALGraph *G,int v) //深度优先遍历算法{ ArcNode *p;visited[v]=1; //置已访问标记p=G->adjlist[v].firstarc; //p指向顶点v的第一个邻接点while (p!=NULL){ if (visited[p->adjvex]==0) //若p->adjvex顶点未访问,递归访问它DFS(G,p->adjvex);p=p->nextarc; //p指向顶点v的下一个邻接点}}bool DFSTrave(ALGraph *G,int i,int j){ int k;bool flag1=false,flag2=false;for (k=0;k<G->n;k++)visited[k]=0;DFS(G,i); //从顶点i开始进行深度优先遍历if (visited[j]==1)flag1=true;for (k=0;k<G->n;k++)visited[k]=0;DFS(G,j); //从顶点j开始进行深度优先遍历if (visited[i]==1)flag2=true;if (flag1 && flage2)return true;elsereturn false;}3.(15分)(1)采用快速排序的算法如下:(12分)int QuickSelect(int R[],int s,int t,int k) //在R[s..t]序列中找第k小的元素{ int i=s,j=t;int tmp;if (s<t) //区段内至少存在2个元素的情况{ tmp=R[s]; //用区段的第1个记录作为基准while (i!=j) //从区段两端交替向中间扫描,直至i=j为止{ while (j>i && R[j]>=tmp)j--; //从右向左扫描,找第1个小于tmp的R[j]R[i]=R[j]; //将R[j]前移到R[i]的位置while (i<j && R[i]<=tmp)i++; //从左向右扫描,找第1个大于tmp的R[i]R[j]=R[i]; //将R[i]后移到R[j]的位置}R[i]=tmp;if (k-1==i) return R[i];else if (k-1<i) return QuickSelect(R,s,i-1,k); //在左区段中递归查找else return QuickSelect(R,i+1,t,k); //在右区段中递归查找}else if (s==t && s==k-1) //区段内只有一个元素且为R[k-1]return R[k-1];}void Mink(int R[],int n,int k) //输出整数数组R[0..n-1]中第k小的元素{ if (k>=1 && k<=n)printf("%d\n", QuickSelect( R,0,n-1,k));}(2)对于求R中第k小元素的算法Mink(R,n,k),设其算法平均执行时间为T(n),有以下递推式:(3分)T(1)=1T(n)=T(n/2)+O(n)则:T(n)= T(n/2)+O(n)= T(n/22)+O(n)+O(n/2)=…=T(n/2m)+O(n)+O(n/2)+ …+O(n/2m) //m=log2n=O(1)+O(n)+O(n)=O(n)所以,该算法的平均时间复杂度为O(n)。