您的当前位置:首页正文

算法与数据结构题库及答案

2023-12-11 来源:星星旅游
一、单项选择题

2

1某算法的时间复杂度是O(n),表明该算法( )。

22

A 问题规模是n B 问题规模与n成正比

2 2

C 执行时间等于n D 执行时间与n成正比

2、关于数据结构的描述,不正确的是( )。 A 数据结构相同,对应的存储结构也相同。

B 数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。 C 数据结构操作的实现与存储结构有关。 D 定义逻辑结构时可不考虑存储结构。

3、按排序策略分来,起泡排序属于( )。

A 插入排序 B 选择排序 C 交换排序 D 归并排序 4、利用双向链表作线性表的存储结构的优点是( )。

A 便于进行插入和删除的操作 B 提高按关系查找数据元素的速度 C 节省空间 D 便于销毁结构释放空间

5、一个队列的进队顺序为1,2,3,4,则该队列可能的输出序列是( )。 A 1,2,3,4 B 1,3,2,4 C 1,4,2,3 D 4,3,2,1 6、Dijkstra算法是按( )方法求出图中从某顶点到其余顶点最短路径的。 A 按长度递减的顺序求出图的某顶点到其余顶点的最短路径

B 按长度递增的顺序求出图的某顶点到其余顶点的最短路径 C 通过深度优先遍历求出图中从某顶点到其余顶点的所有路径 D 通过广度优先遍历求出图的某顶点到其余顶点的最短路径 7、字符串可定义为n(n≥0)个字符的有限( )。其中,n是字符串的长度,表明字符串中字符的个数。

A 集合 B 数列 C 序列 D 聚合

8、在二维数组A[9][10]中,每个数组元素占用3个存储单元,从首地址SA开始按行连续存放。在这种情况下,元素A[8][5]的起始地址为( )。

A SA+141 B SA+144 C SA+222 D SA+255

9、已知广义表为L(A(u,v,(x,y),z),C(m,(),(k,l,n),(())),((())),(e,(f,g),h)),则它的长度是( )。

A 2 B 3 C 4 D 5

10. 对于具有n(n>1)个顶点的强连通图,其有向边条数至少有_____。

A. n+1 B. n C. n-1 D. n-2

11. 一个递归算法必须包括__________。

A. 递归部分 B. 结束条件和递归部分C. 迭代部分 D. 结束条件和迭代部分 12. 从逻辑上看可以把数据结构分为__________两大类。

A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构

13、若在长度为n的顺序表的表尾插入一个新元素的渐进时间复杂度为( )。

2

A O(n) B O(1) C O(n) D O(log2n)

14. 采用顺序搜素方式搜索长度为n的线性表时,在等概率情况下,搜索成功时的平均搜索长度为__________。

A. n B. n/2 C. (n+1)/2 D. (n-1)/2 15、非空的循环单链表first的链尾结点(由p所指向)满足( )。 A p->link==NULL; B P==NULL;

第1页,共7页

C p->link==first; D p==first;

16、用S表示进栈操作,用X表示出栈操作,若元素的进栈顺序是1234,为了得到1342的出栈顺序,相应的S和X的操作序列为( )。 A SXSXSSXX B SSSXXSXX C SXSSXXSX D SXSSXSXX

17、含有129个叶结点的完全二叉树,最少有( )个结点。 A 254 B 255 C 257 D 258

18、一个有向图G的邻接表存储如图(1)所示,现按深度优先搜索方式从顶点A出发执行一次遍历,所得的顶点序列是( )。 A 1,2,3,4,5 B 1,2,3,5,4 C 1,2,4,5,3 D 1,2,5,3,4 19、树最合适用来表示( )。

A 有序数据元素 B 元素之间具有分支层次关系的数据 C 无序数据元素 D 元素之间无联系的数据

20、一棵有124个叶结点的完全二叉树最少有( )个结点。 A 247 B 248 C 249 D 250

21、图(1)给出的一棵二叉搜索树,对应的二叉判定树如图(2)所示,它的搜索成功的平均长度是( )。

A 21/7 B 28/7 C 15/6 D 16/6

图(1)二叉搜索树 图(2)二叉判定树

23、对5个不同的数据元素进行直接插入排序,最大需要进行( )次比较。 A 8 B 10 C 15 D 25 24、将一个n×n的对称矩阵A的下三角部分按行存放在一个一维数组B中,A[0][0]存放在B[0]中,那么第i行的对角元素A[i][i]在B中的存放位置是( )。

A (i+3)*i/2 B (i+1)*i/2 C (2n-i+1)*i/2 D (2n-i-1)*i/2

25、已知广义表为L(A(u,v,(x,y),z),C(m,(),(k,l,n),(())),((())),(e,(f,g),h)),则它的深度是( )。

A 2 B 3 C 4 D 5

26、顺序搜索法适合于存储结构为( )的线性表。

A 散列存储 B 顺序存储或链式存储 C 压缩存储 D索引存储

27、采用折半搜索方式搜索一个长度为n的有序顺序表时,其平均搜索长度为( )。

2

A O(n) B O(log2n) C O(n) D O(nlog2n) 28、n个结点的线索二叉树中,线索的数目是( )。

A n-1 B n+1 C 2n D 2n-1

29、若数据元素序列{11,12,13,7,8,9,23,4,5}是采用下列排序方法之一得到的第二趟排序后的结果,则该排序方法只能是( )。

A 插入排序 B 选择排序 C 交换排序 D 归并排序

第2页,共7页

30、为了增加内存空间的利用率和减少溢出的可能,在两个栈共享一片连续的存储空间时,应将两个栈的栈顶分别设在这片存储空间的两端,当( )时才产生上溢。 A 两个栈的栈顶同时到达栈空间的中心点 B 其中一个栈的栈顶到达栈空间的中心点 C 两个栈的栈顶在栈空间的某一位置相遇 D 两个栈的栈顶相加超过了栈空间的最大容量

31、设一棵二叉树的中序序列为badce,后序遍历为bdeca,则该二叉树前序遍历的顺序是( )。

A adbec B decab C debac D abcde 32、图的简单路径是指( )不重复的路径。

A 权值 B 顶点 C 边 D 边与顶点均不重复 33、用n个权值构造出来的Huffman树共有( )个结点。 A 2n-1 B 2n C 2n+1 D n+1

34、在如图(2)所示的AVL树中插入关键码48,得到了一棵新的AVL树,在这棵新的AVL树中,关键码37所在结点的左右子女结点中保存的关键码分别是( )。

A 13,48 B 24,48 C 24,53 D 24,90

图(1)14小题的邻接表 图(2)15小题的AVL树

二、填空题

1、算法效率的度量分为 事后测量 和 事前估 两种。

2、算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。它应当具有输入、输出、确定性、 有穷性 可行性等特性。

3、一个抽象数据类型ADT包括 数据操作 和 对象 两个部分。 4、队列的插入操作是在 队尾 进行,删除操作是在 队头 进行。 5、栈又称为 先进后出 的线性表,队列又称为 先进先出 线性表。 6、对称矩阵的行数和列数 相等 且以主对角线为对称轴,因此只要存储它的上三角部分或者下三角部分即可。 7、利用三元组表存放稀疏矩阵中的非零元素,则在三元组表中每个三元组中应记录相应非零元的行号、列号和非零元素的 值 。

8、广义表A((a,b,c),(d,e,f))的表头是 (a,b,c) 。 9、广义表A((a,b,c),(d,e,f))的表尾是 ((d,e,f)) 。

10、在一棵有n个结点的二叉树中,若度为2的结点数为n2,度为1的结点数为n1,度为0的结点数为n0,则树的最小高度为 log2n1 ,其叶节点数为 n2+1 。 11、在一棵有n个结点的二叉树中,若度为2的结点数为n2,度为1的结点数为n1,度为0的结点数为n0,则树的最大高度为 n ,其叶节点数为 1 。

12、已知有序顺序表(13,18,24,35,47,50,62,83,90,115,134),当用折半搜索法搜索值18

第3页,共7页

的元素时,搜索成功的数据比较次数为 4 。

13、采用顺序搜索方式搜索长度为n的线性表时,平均搜索长度为 (n+1)/2 。 14、对于一个具有n个顶点和e条边的无向图进行遍历,若采用邻接矩阵表示,则时间复

2

杂度为 O(n) ,若采用邻接表表示,则时间复杂度为 O(n+e) 。

2

15、对于一个具有n个顶点和e条边的无向图,若采用邻接矩阵表示,则该矩阵大小是 n ,矩阵中的非零元个数为 2e 。

16、每次从无序表中挑选一个最小或者最大元素,把它交换到有序表的一端,此种排序方法叫做 交换 排序。

17、对n个元素的序列进行排序时,如果待排序元素序列的初始排列完全逆序,则起泡排序过程中需要进行 n(n-1)/2 次元素值的比较, n(n-1)/2 次元素值的交换。 18、每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做插入 插入 排序。

19、对n个元素的序列进行排序时,如果待排序元素序列的初始排列已经全部有序,则起泡排序过程中需要进行 n-1 次元素值的比较, 0 次元素值的交换。

三、判断题

1、数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按照使用需要建立的。错 2、数据结构是指相互之间存在一种或多种关系的数据元素的全体。对 3、根据队列的先进先出的特性,最后进队列的元素最后出队列。对 4、在顺序栈中元素是按照其值的大小有序存放的。错 5、栈底元素是不能删除的。错

6、在队列中,n个元素的进队列顺序和出队列顺序总是一致的。对

7、数组是一种复杂的数据结构,数组元素之间的关系既不是线性的,也不是树形的。错 8、广义表是线性表的推广,但它不是一种线性结构。对

9、二维数组可以视为数组元素为一维数组的一维数组。因此,二维数组是线性结构。错 10、有n个整数存放在一维数组A[n]中,在进行顺序搜索时,无论这n个整数的排列是否有序,其平均搜索长度都相同。错

11、邻接矩阵适用于稠密图(边数接近于顶点数的平方),邻接表适用于稀疏图(边数远小于顶点数的平方)。对

12、对n个顶点的连通图G来说,如果其中的某个子图有n个顶点,n-1条边,则该子图一定是G的生成树。错

13、希尔排序、简单选择排序都是不稳定的排序方法。错

14、如果一个二叉树的结点,或者两棵子树都空,或者两棵子树都非空,则此二叉树称为完全二叉树。错

15、在二叉搜索树中,任一结点所具有的关键码值都大于它的左子女(如果存在)的关键码值,同时小于其右子女(如果存在)的关键码值。对

16、具有n个顶点的无向图最多有n(n-1)条边,最少有n-1条边。错 17、最小生成树是指边数最少的生成树。错 四、简答与计算题

1、什么是数据结构?有关数据结构的讨论涉及哪三个方面? 2、什么是算法,算法的5个特性是什么?

3、已知如图(3)所示的有向图,请利用Kruskal算法求出最小生成树。

第4页,共7页

图(3)

4、如图(3)所示的有向图,请给出该图的邻接矩阵和邻接表。

A B C 图(3)

D E F

5、已知一棵二叉树的前序遍历结果是ABECDFGHIJ,中序遍历结果是EBCDAFHIGJ,试画出这棵二叉树。

6、给定权值集合{15,03,14,02,06,09,16,17},构造相应的huffman树,并计算它的带权外部路径长度。

第5页,共7页

7、设串s为“abcabaa”,试计算其next数组的值。 j r next[j] 0 a -1 1 b 0 2 c 0 3 a 0 4 b 1 5 a 2 6 a 1 8、利用广义表的head和tail操作写出函数表达式,把以下各题中单元素banana从广义表中分离出来。

(1)L1(apple,pear,banana,orange) (2)L2((apple,pear),(banana,orange))

(3)L3(((apple),(pear),(banana),(orange))) (4)L4((((apple),pear),banana),orange) (5)L5(apple,(pear,(banana),orange))

(1)Head(Tail(Tail(L1)))(1分) (2)Head(Head(Tail(L2))) (1分)

(3)Head(Head(Tail(Tail(Head(L3))))) (1分) (4)Head(Tail(Head(L4))) (1分)

(5)Head(Head(Tail(Head(Tail(L6))))) (1分)

9、设有序顺序表中的元素依次为17,154,170,275,503,509,512,553,612,677,765, 897,908。试画出对其进行折半搜索时的判定树,并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度。

搜索成功的平均搜索长度为45/14(1分) 搜索不成功的平均搜索长度为59/14(1分)

10、已知一个待排序的关键字序列为{56,36,22,86,72,10,28,48},请写出快速排序每一趟排序的结果(写出过程)。(5分) 第1趟排序结果:48,36,22,28,10,56,72,86 第2趟排序结果:10,36,22,28,48,56,72,86

第6页,共7页

第3趟排序结果:10,36,22,28,48,56,72,86 第4趟排序结果:10,22,28,36,48,56,72,86 第5趟排序结果:10,22,28,36,48,56,72,86

11、已知一个有序表 ( 15, 26, 34, 39, 45, 56, 58, 63, 74, 76, 83, 94 ) 顺序存储于一维数组a[12]中,根据折半搜索过程填写成功搜索下表中所给元素34, 56, 58, 63, 94,50时的比较次数。

元素值 比较次数 34 2 56 1 58 3 63 4 94 4 50 4

12、已知一组关键字(1,13,12,34,38,33,27,22)请按哈希函数H(key)=key MOD 11,处理冲突的方法是线性探测再散列法,哈希表长度为11,请画出该哈希表并求其在查找概率相等的情况下的平均查找长度。

33 1 13 12 34 38 27 22 0 1 2 3 4 5 6 7 8 9 10 平均查找长度为:1/8(1*4+2*1+3*1+4*1+8*1)=21/8

13. 判断以下序列是否是最小堆?如果不是, 将它调整为最小堆。

(1) { 100, 86, 48, 73, 35, 39, 42, 57, 66, 21 } (2) { 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 } 答:(1)调整为最小堆后为 { 21, 35, 39, 57, 86, 48, 42, 73, 66, 100 }

(2)调整为最小堆后为 { 12, 24, 33, 65, 33, 56, 48, 92, 86, 70 }

14.在一棵空的二叉排序树中依次插入关键字序列为20、30、8、12、34、5、60、3、1,29,请画出所得到的二叉排序树。

五、算法设计题

1、编写程序实现起泡排序算法(从小到大排列):

i>1&&change 、 change = FALSE 、 L.r[j+1].key2、设计一个算法,将一个头节点的数据域依次为a,a2,a3.....an(n>=3)的单链表的所有节点逆置。

第7页,共7页

因篇幅问题不能全部显示,请点此查看更多更全内容