• 选择题。
1.算法计算量的大小称为算法的( B )。
A、效率 B、复杂性 C、现实性 D、难度
2.以下数据结构中,( B )不是线性结构。
A、广义表 B、二叉树 C、稀疏矩阵 D、串
3、下面程序段中,对x赋值语句的频度为( C )。
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
x=x+1;
A、O(2n) B、O(n) C、O(n2) D、O(log2n)
4.链式存储结构的最大优点是( D )。
A、便于随机存取 B、存储密度高
C、无须预分配空间 D、便于进行插入和删除操作
5.假设顺序表中每一个数据元素占4个存储单元,且第一个数据元素的存储地址为100,则第8个数据元素的存储地址为( D )。
A、106 B、107 C、124 D、128
6.若线性表中经常要存取第i个数据元素及其前趋,则宜采用( A )存储方式。
A、顺序表 B、带头结点的单链表
C、不带头结点的单链表 D、循环单链表
7.在单链表中若经常要删除表中最后一个结点或在最后一个结点之后插入一个新结点,则宜采用( C )存储方式。
A、顺序表 B、用头指针标识的循环单链表
C、用尾指针标识的循环单链表 D、双向链表
8.在一个单链表中的p和q两个结点之间插入一个新结点s,则修改链接的语句为(D)。
A、s->next=p; q->next=s; B、p->next=s->next; s->next=p;
C、q->next=s->next; s->next=p; D、p->next=s; s->next=q;
9.在一个长度为n的有序单链表中插入一个新结点,使单链表仍然保持有序的算法的时间复杂度是(C)。
A、O(1) B、O(long2n) C、O(n) D、O(n2)
10.要将一个顺序表(a0,a1,……,an-1)中的数据元素ai(0<=i<=n-1)删除,需要移动(C)个数据元素。
A、i B、n-i-1 C、n-i D、n-i+1
11.在栈中存取数据的原则是(B)。
A、先进先出 B、先进后出 C、后进后出 D、没有限制
12.若将整数1,2,3,4依次进栈,则不可能得到的出栈序列是(D)。
A、1234 B、1324 C、4321 D、1423
13.在链栈中进行出栈操作时(B)。
A、需要判断栈是否满 B、需要判断栈是否空
C、需要判断栈元素的类型 D、无须对栈做任何判断
14.在顺序栈中,若栈顶指针top指向栈顶元素的下一个存储单元,且顺序栈的最大容量是maxsize,则顺序栈的判空条件是(B)。
A、top0 B、top-1 C、topmaxsize D、topmaxsize-1
15. 在顺序栈中,若栈顶指针top指向栈顶元素的下一个存储单元,且顺序栈的最大容量是maxsize,则顺序栈的判满条件是(D)。
A、top0 B、top-1 C、topmaxsize D、topmaxsize-1
16.在队列中存取数据元素的原则是(A)。
A、先进先出 B、先进后出 C、后进后出 D、没有限制
17.在循环顺序队列中,假设以少用一个存储单元的方法来区分判断队满和队空的条件,front和rear分别为队头和队尾指针,他们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxsize,则队列的判空条件是(A)。
A、frontrear B、front!=rear
C、frontrear +1 D、front==(rear+1)%maxsize
18. 在循环顺序队列中,假设以少用一个存储单元的方法来区分判断队满和队空的条件,front和rear分别为队头和队尾指针,他们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxsize,则队列的判满条件是(D)。
A、frontrear B、front!=rear
C、frontrear +1 D、front==(rear+1)%maxsize
19. 在循环顺序队列中,假设以少用一个存储单元的方法来区分判断队满和队空的条件,front和rear分别为队头和队尾指针,他们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxsize,则队列的长度是(C)。
A、rear- front B、rear- front+1
C、(rear- front+maxsize)%maxsize D、(rear- front+1)%maxsize
20.设长度为n的链队列采用单循环链表表示,若只设一个头指针指向队首元素,则入队操作的时间复杂度为(B)。
A、O(1) B、O(n) C、O(long2n) D、O(n2)
21.下面关于串的叙述中,(B)是不正确的。
A、模式匹配是串的一种重要运算 B、空串是由空格构成的串
C、串既可以采用顺序存储,也可以采用链式存储 D、串是字符的有限序列
22.串是一种特殊的线性表,其特殊性体现在(B)。
A、可以顺序存储 B、数据元素是一个字符
C、可以链式存储 D、数据元素可以是多个字符
23.串的长度是指(B)。
A、串中所含不同字母的个数 B、串中所含字符的个数
C、串中所含不同字符的个数 D、串中所含非空格字符的个数
24.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为(A)。
A、求子串 B、连接 C、模式匹配 D、求串长
25.若串S=’software’,其子串的个数是(B)。
A、8 B、37 C、36 D、9
26.常对数组进行的两种操作是(C)。
A、建立与删除 B、索引与修改 C、查找与修改 D、查找与索引
27.数组A[0…5,0…6]的每个元素占5个字节,将其按列优先的次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是(C)。
A、1175 B、1180 C、1205 D、1210
28.对稀疏矩阵进行压缩存储的目的是(C)。
A、便于进行矩阵运算 B、便于输入和输出
C、节省存储空间 D、降低运算的时间复杂度
29.顺序查找法适合于存储结构为(B)的线性表。
A、散列存储 B、顺序存储或链式存储
C、压缩存储 D、索引存储
30.若查找每个记录的概率相等,则在具有n个记录的连续顺序文件中采用顺序查找法法查找一个记录,其平均查找长度ASL为(C)。
A、(n-1)/2 B、n/2 C、(n+1)/2 D、n
31.适用于折半查找的表的存储方式及元素排列要求为(D)。
A、链表方式存储,元素无序 B、链表方式存储,元素有序
C、顺序方式存储,元素无序 D、顺序方式存储,元素有序
32.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度(C)。
A、必定快 B、不一定快
C、在大多数情况下要快 D、取决于表递增还是递减
33.树形结构是指元素之间存在一种(D)。
A、一对一关系 B、多对多关系 C、多对一关系 D、一对多关系
34.在一棵二叉树上第四层的结点数最多为(D)。
A、2 B、4 C、6 D、8
35.一棵深度为k的满二叉树的结点总数为(A)。
A、2k-1 B、2k-1 C、2k+1 D、2k
36.一棵深度为k的完全二叉树的最少结点数为(B)。
A、2k-1 B、2k-1 C、2k+1 D、2k
37.一棵深度为k的完全二叉树的最多结点数为(A)。
A、2k-1 B、2k-1 C、2k+1 D、2k
38.树最适合用来表示(B)。
A、有序数据元素 B、元素之间具有层次关系的数据
C、无序数据元素 D、元素之间无联系的数据
39.设森林F中有3棵树,其中树的结点数依次为M1,M2,M3,则与F对应的二叉树的根结点的右子树上的结点数为(D)。
A、M1 B、M1+M2 C、M3 D、M2+M3
40.讨论树、森林和二叉树的关系,是为了(A)。
A、借助二叉树上的运算方法去实现树的一些运算
B、将树、森林按二叉树的存储方式进行存储
C、将树、森林转换为二叉树
D、体现一种技巧,没有什么实际意义
41.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(C)。
A、250 B、500 C、501 D、505
42.下列说法中正确的是(D)。
A、任何一个二叉树中至少有一个结点的度为2
B、任何一个二叉树中每个结点的度都可以大于2
C、任何一个二叉树中结点的度均为2
D、任何一个二叉树中结点的度可以小于2
43.在下列情况中,可称为二叉树的是(C)。
A、每个结点至多有两棵子树的树
B、每个结点只有一棵左子树的树
C、每个结点至多有两棵子树的有序树
D、每个结点只有一棵右子树的树
44.下面几组编码集合中,不是前缀编码的是(B)。
A、{0,10,110,1111} B、{11,10,001,101,0001}
C、{00,010,0110,1000} D、{b,c,aa,ac,aba,abb,abc}
45. 图中有关路径的定义是(A)。
A、由顶点和相邻顶点构成的边所形成的序列
B、由不同顶点所形成的序列
C、由不同边所形成的序列
D、上述定义都不是
46.以下说法正确的是(B)。
A、连通分量是无向图中的极小连通子图
B、强连通分量是有向图中的极大强连通子图
C、在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧
D、对有向图G,如果从任意顶点出发进行一次深度优先或广度优先搜索能访问到每个顶点,则该图一定是完全图
47.要连通具有n个顶点的有向图,至少需要(A)条边。
A、n-1 B、n C、n+1 D、2n
48.(B)的邻接矩阵是对称矩阵。
A、有向图 B、无向图 C、AOV网 D、AOE网
49.以下说法不正确的是(C)。
A、图的遍历是从给定的源点出发访问图中的每一个顶点且仅访问一次
B、图的遍历算法有两种:深度优先和广度优先
C、图的深度遍历不适合用于有向图
D、图的深度遍历是一个递归过程
50.在图采用邻接表存储时求最小生成树的Prim算法的时间复杂度为(C)。
A、O(n) B、O(n+e) C、O(n2) D、O(n3)
51.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是(D)。
A、G中有弧
C、G中没有弧
52.下列关于AOE网的叙述中不正确的是(B)。
A、关键活动不按期完成就会影响整个工程的完成时间
B、任何一个关键活动提前完成,那么整个工程将会提前完成
C、所有关键活动都提前完成,那么整个工程将会提前完成
D、某些关键活动提前完成,那么整个工程将会提前完成
53.当采用分块查找时,数据的组织方式为(B)。
A、数据分成若干块,每块内数据有序
B、数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块
C、数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块
D、数据分成若干块,每块(除最后一块外)中数据个数需相同
54. 散列表的平均查找长度(A)。
A、与处理冲突方法有关而与表的长度无关
B、与处理冲突方法无关而与表的长度有关
C、与处理冲突方法有关而与表的长度有关
D、与处理冲突方法无关而与表的长度无关
55.内部排序算法的稳定性是指(D)。
A、该排序算法不允许有相同的关键字记录
B、该排序算法允许有相同的关键字记录
C、平均时间为O(nlogn)的排序算法
D、以上都不对
56.在下列排序算法中,算法(D)的时间复杂度与初始排序序列无关。
A、直接插入排序 B、冒泡排序
C、快速排序 D、直接选择排序
57.一组记录的关键字为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准记录得到的一次划分结果为(C)。
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)
58.对关键字序列(70,55,100,15,33,65,50,40,95)进行直接插入排序时,把65插入,需要比较(B)次关键字。
A、2 B、3 C、6 D、8
59.当待排序序列基本有序时,以下排序方法中,(B)最不利于其优势的发挥。
A、直接选择排序 B、快速排序
C、冒泡排序 D、直接插入排序
60.在待排序序列局部有序时,效率最高的排序算法是(D)。
A、直接选择排序 B、快速排序
C、归并排序 D、直接插入排序
61.若需要利用形式参数直接访问修改实参值,则应将形参说明为(A)。
A、指针 B、值参数 C、局部变量 D、全局变量
62.执行下面程序段的时间复杂度为(B)。
for(i=0;i
A、O(m2) B、O(mn) C、O(n2) D、O(m+n)
63.执行下面程序段时,语句S的执行次数为(D)。
for(i=0;i<=n;i++)
for(j=0;j<=i;j++)
S;
A、n2 B、n2/2 C、n(n+1) D、(n+1)(n+2)/2
64.为解决计算机主机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区。主机将要打印输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据打印。该缓冲区的逻辑结构应该是(C)。
A、树 B、栈 C、队列 D、图
65.设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。如果每个元素出栈后立即进入队列Q,且7个元素出兑的顺序为bdcfeag,则栈S的容量至少是(C)。
A、1 B、2 C、3 D、4
66.某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作,元素a、b、c、d、e依次入队,则不可能得到的出队顺序是(C)。
A、bacde B、dbace C、dbcae D、ecbad
• 填空题。
1.数据的逻辑结构包括( )、( )、( )、( );存储结构包括( )、( )、( )、( )。
2.数据结构的主要研究内容是( 逻辑结构 )、( 物理结构)、(运算集合)。
3.冒泡排序算法的时间复杂度是(O(n^2))。
4.下面程序段的时间复杂度是(O(n))。
sum=1;
for(i=0; sum
5.为了便于讨论,有时将含有n(n>=0)个节点的线性结构表示成(a1,a2,……,an),其中每个ai代表一个(节点),a1称为(起始)节点,an称为(终端)节点,i称为ai在线性表中的(位置或序号)。对任意一对相邻节点ai,ai+1(1<=i<=n),ai称为ai+1的(直接前驱),ai+1称为ai的(直接后继)。
6.线性结构的基本特征是:若至少含有两个节点,则除起始节点没有直接(前驱)外,其他节点有且仅有一个直接(前驱);除终端节点没有直接(后继)外,其他节点有且仅有一个直接(后继)。
7.线性表的常见链式存储结构有(单链表)、(循环链表)、( 双向链表)。
8.在顺序表(a1,a2,……,an)的第i(1<=i<=n)个位置之前插入一个新的数据元素,会引起(n-i+1)个数据元素的移动操作。
9.在线性表的单链表存储结构中,每一个结点有两个域,一个是数据域,用于存储数据元素本身;另一个是(指针域),用于存储后继结点的地址。
10.在线性表的顺序存储结构中可实现快速的随机存取,而在链式存储结构中则只能进行(指针顺序)存取。
11.顺序表中逻辑上相邻的数据元素,其物理位置(一定)相邻,而在单链表中逻辑上相邻的数据元素,其物理位置(不一定)相邻。
12.在含有N个结点的单链表,若要删除一个指定的结点p则首先必须找到(直接前驱),其时间复杂度为(O(n))。
13.线性表通常采用(顺序存储结构)和(链式存储结构)两种存储结构。若线性表的长度确定或变化不大,则适合采用(顺序存储结构)进行存储。
14.在仅设置了尾指针的循环链表中,访问第一个结点的时间复杂度(O(1))。
15.栈是一种操作受限制的特殊线性表,其特殊性体现在插入和删除操作都限制在表的一端进行。允许插入和删除操作的一端称为(栈顶),二另一端称为(栈低)。
16.栈有两种存储结构,分别是(顺序存储)和(链式存储);以这两种存储结构存储的栈分别称为(顺序栈)和(链栈)。
17.在不带头结点的链栈中,若栈顶指针top直接指向栈顶元素,则将一个新结点p入栈时修改链接的语句为(s->top++)和(s->elem[s->top]=p)。
18. 在不带头结点的链栈中,若栈顶指针top直接指向栈顶元素,则将栈顶元素出栈时修改链接的语句为(x=s->elem[s->top])、(s->top–)和(return(x))。
19. 队列也是一种操作受限制的特殊线性表,与栈不同的是,队列中所有的插入操作均限制在表的一端进行,而所有的删除操作都限制在表的另一端进行,允许插入的一端称为(队尾),允许删除的一端称为(队头)。
20.由于队列的插入和删除操作分别在队头和队尾进行,因此,在链式存储结构中需要设置两个指针分别指向(头结点)和(最后一个元素),这两个指针又分别称为(队头指针)和(队尾 指针)。
21.循环顺序队列是将顺序队列的存储区域看成是一个首尾相连的环,首尾相连的状态是通过数学上的(取模)运算来实现的。
22.在循环顺序队列中,若规定当frontrear时,循环队列为空,当front(rear+1)%maxsize时,循环队列为满,则入队操作时队尾指针变化的相应语句为(rear=(rear+1)%maxsize);出队操作时队尾指针变化的相应语句为(front=(front+1)%maxsize)。
23.无论是顺序栈还是顺序队列,插入元素时必须先进行(是否满)判断,删除元素时必须先进行(是否空)判断;而链栈或链队列中,插入元素不必进行栈或队列是否为满的判断,只要在删除元素时先进行栈或队列是否为空的判断。
24.含零个字符的串称为(空串)。任何串中所含(字符)的个数称为该串的长度。
25.当且仅当两个串的(长度)相等并且各个对应位置上的字符都(相等)时,这两个串相等。一个串中任意个连续字符组成的序列称为该串的(子串),该串称为它的所有子串的(主串)。
26.通常采用(顺序)存储结构来存储数组。对二维数组可有两种存储方法:一种是以(行序)为主序的存储方式,另一种是以(列序)为主序的存储方式。
27.所谓稀疏矩阵是指(大多数元素为0)。
28.在一棵度为m的树中,如果度为1的结点有n1个,度为2的结点有n2个,……,度为m的结点有nm个,则这棵树中的叶子结点的个数为( )。
29.树的存储结构包括(双亲表示法)、(孩子表示法)和(孩子兄弟表示法)。
30.若一棵完全二叉树的第4层有7个节点,则这棵完全二叉树的结点的总数为(14)。
31.在哈夫曼树中,任何一个结点的度都是()。
32.若对一棵完全二叉树按层次从0 开始进行结点编号,且每层按从左到右的顺序编号,并按此编号把它顺序存储到一维数组A中,即编号为0 的结点存储到A[0]中,其余类推,则A[i]的左孩子编号为(2i),右孩子编号为(2i+1),双亲编号为(i/2)。
33.具有10个顶点的无向图,边的总数最多为(45)。
34.在有向图的邻接矩阵表示中计算第i个顶点入度的方法是(第i列元素之和)。
35.构造连通网的最小生成树的两个典型算法是(普里姆算法)和(克鲁斯-卡尔算法)。
36.有向图G可拓扑排序的判别条件是(图中无环)。
37.AOV网中,顶点表示(活动),弧表示(活动间的优先关系)。AOE网中,顶点表示(事件),弧表示(活动)。
38.顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为(n)次;当使用监视哨时,若查找失败,则比较关键字的次数最多为(n+1)。
39.在顺序表(8,11,15,19,25,25,30,33,42,48,50)中,用二分法(折半法)查找关键码值20,需进行的关键码比较次数为(4)。
40.一个无序序列可以通过构造一棵(二叉排序)树而变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。
41.执行排序操作时,根据使用的存储器可将排序算法分为(内部排序)和(外部排序)。
42.在对一组记录序列(50,40,95,20,15,70,60,45,80)进行直接插入排序时,当把第7个记录60插入到有序表中时,为寻找插入位置需比较(3)次。
43.在直接插入排序和直接选择排序中,若初始序列基本有序,则选用(直接插入排序)法效率更高。
44.在对一组记录序列(50,40,95,20,15,70,60,45,80)进行直接选择排序时,第4次交换和选择后,未排序记录为(50 95 70 60 80)。
45.n个记录的冒泡排序算法所需的最多移动次数为(3n(n-1)/2),最少移动次数为(0)。
46.对n个结点进行快速排序,最多的比较次数为(n(n-1)/2)。
47.在归并排序中,若待排序记录的个数为20,则共需要进行(5)趟归并。
48.内部排序算法的稳定性是指(相同关键字的领先关系在排序过程中是否发生变化)。
49.一棵二叉树中度为1的结点个数为5,度为2的结点有3个,则这棵二叉树中的叶子结点的个数为()。
50.一棵有100个结点的完全二叉树,其叶子结点的个数为(50)。
51.变量的作用域是指(包含该变量的最小范围)。
52.抽象数据类型具有(数据抽象)和(信息隐蔽)的特点。
53.一种抽象类型包括(数据对象)、(结构关系)和(数据操作)。
54.在线性结构、树状结构和图结构中,数据元素之间分别存在着(一对一)、(一对多)和(多对多)联系。
55.算法是规则的有限集合,是为解决特定问题而规定的(一系列操作)。
56.算法具有(有限性)、确定性、(可行性)、(输入)和输出五大特性。
57. 线性表通常采用顺序存储和链式存储两种存储结构。在顺序表中,线性表的长度在定义数组时就已确定,是(顺序)保存;在链表中,整个链表由“头指针”来指示,单链表的长度是(链式)保存。
• 判断题。
1.给定任意一棵树都可以找到一棵对应的二叉树。(T)
2.一棵树的前序遍历和后序遍历序列分别与它的对应二叉树的前序遍历和后序遍历序列是一致的。(F)
3.哈夫曼树的结点个数不可能是偶数。(T)
4. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值,小于其右孩子的值。(F)
5.算法就是程序。(F)
6.无向图的邻接矩阵一定是对称的,有向图的邻接矩阵不一定是对称的。(T)
7.一个有向图的邻接表和逆邻接表中的结点个数一定相等。(F)
8. 查找n个关键字的散列表时,平均查找长度与n无关。(T)
9.由二叉树的中序表示和前序表示可以导出二叉树的后序表示。(T)
10.线性结构只能用顺序结构存放,非线性结构只能用非顺序结构存放。(F)
11.稀疏矩阵压缩存储后,不影响其失去随机存取的功能。(F)
12.在一个大根堆中,最小元素不一定在最后。(T)
13.对n个记录采用快速排序方法进行排序,最坏情况下所需时间复杂度是O(nlog2n)。(T)
14.如果一个二叉树中没有度为1的结点,则比为满二叉树。(F)
15.在高级语言(如C或者PASCAL)中,指针类型是原子类型。(T)
16.只要还有可用空间,链栈和链队就不会出现栈满或队满的情况。(T)
17.在执行某排序算法的过程中,出现了排序码朝着与最终排序序列相反方向移动的现象,则称该算法是不稳定的。(T)
18. AOE网所表示的工程至少所需的时间等于从源点到汇点的最长路径的长度。(F)
19. 在单链表中,头结点是必不可少的。(F)
20.循环链表的结点结构与单链表的结点结构完全相同,只是结点间的连接方式不同。(T)
21. 内部排序是指排序过程完全在内存中进行的排序。(T)
22. 拓扑排序是指结点的值是有序排列。(F)
23. 在采用线性探测法处理冲突的散列表中,所有同义词在表中相邻。(F)
24. 顺序栈在栈满的情况下不能做进栈操作,否则将产生“上溢”。(T)
25. 头指针就是头结点。(F)
26.空串与空格串是相同的。(F)
27.构造哈希函数的两个原则是:函数本身便于计算;计算出来的地址绝对不能发生冲突。(F)
28. 如果某排序算法是不稳定的,则该排序方法没有实际应用价值。(F)
29.队列中,允许插入的一端叫做队尾,允许删除的一端则称为队头。(T)
30.用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。(F)
31. 二叉排序树的查找和折半查找的时间性能相同。(F)
32. AOV网的拓扑序列是唯一的。(F)
33. 从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构。(T)
34. 连通分量是无向图中的极小连通子图。(F)
35.在循环队列(少用一个元素空间)中front 指向对头元素位置,rear 指向队尾元素的后一位置,则队满的条件是front= =rear。(F)