s+=B[i][j];
sum=s;
——O(n2)
(3)A=B;B=C;C=A;
——O
(1)
3.设无向图G(所下图所示),要求给出从1出发对该图进行深度优先和广度优先遍历的序列。
深度:
125364,广度:
123456 (不唯一)
4.已知无向图G的邻接表如图所示,分别写出从顶点1出发的深度遍历和广度遍历序列。
【解答】深度优先遍历序列为:
1,2,3,4,5,6
广度优先遍历序列为:
1,2,4,3,5,6
二、判断正误(7小题,共14分)
1.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。
(√)
2.一个栈的输入序列为:
A,B,C,D,可以得到输出序列:
C,A,B,D。
(ㄨ)
3.稀疏矩阵压缩存储后,必会失去随机存取功能。
(√)
4.如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。
( √)
5.用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
(√)
6.向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。
( ㄨ)
7. 逻辑结构与数据元素本身的内容和形式无关。
(√)
1.对链表进行插入和删除操作时不必移动链表中结点。
( √)
3.如果两个串含有相同的字符,则说明它们相等。
( ㄨ)
4.在线索二叉树中,任一结点均有指向其前趋和后继的线索。
( ㄨ)
5.带权无向图的最小生成树是唯一的。
( ㄨ)
6.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。
( √)
7.无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的。
( ㄨ)
8.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
( √)
1.由树转化成二叉树,该二叉树的右子树不一定为空。
( ㄨ)
2.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。
( √)
4.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
(√ )
5.设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。
( ㄨ)
6.每种数据结构都具备三个基本操作:
插入、删除和查找。
( ㄨ)
1.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
(×)
2.在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
√
3.链表的每个结点都恰好包含一个指针域。
(×)
4.有向图的邻接表和逆邻接表中表结点的个数不一定相等。
(×)
5.对连通图进行深度优先遍历可以访问到该图中的所有顶点。
( √)
6.当装填因子小于1时,向散列表中存储元素时不会引起冲突。
(×)
2. 线性表的逻辑顺序和存储顺序总是一致的。
(×)
3.非空的双向循环链表中任何结点的前驱指针均不为空。
( √)
4.子串“ABC”在主串“AABCABCD”中的位置为2。
( √)
5.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的,也不是树形的。
(×)
7.用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。
(×)
9.当装填因子小于1时,向散列表中存储元素时不会引起冲突。
(×)
10.散列技术的查找效率主要取决于散列函数和处理冲突的方法。
(×)
1.线性结构的基本特征是:
每个元素有且仅有一个直接前驱和一个直接后继。
(ㄨ )
2.稀疏矩阵压缩存储后,必会失去随机存取功能。
(√ )
5.对任意一个图,从某顶点出发进行一次深度优先或广度优先遍历,可访问图的所有顶点。
( ㄨ)
6.当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。
(√ )
7.数据的逻辑结构和数据的存储结构是相同的。
( ㄨ)
8.数据的存储结构是数据的逻辑结构的存储映像。
( √)
三、单项选择题(8小题,共16分)
1.下面关于线性表的叙述错误的是( D)。
A线性表采用顺序存储必须占用一片连续的存储空间
B线性表采用链式存储不必占用一片连续的存储空间
C线性表采用链式存储便于插入和删除操作的实现
D线性表采用顺序存储便于插入和删除操作的实现
2.单链表的存储密度( C )。
A.大于1 B.等于1 C.小于1 D.不能确定
3. 设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( B)。
A 5,3,4,6,1,2 B 3,2,5,6,4,1
C 3,1,2,5,4,6 D 1,5,4,6,2,3
4.若串S="SOFTWARE",其子串的数目最多是:
( C)。
A.35 B.36 C.37 D.38
5.二叉排序树中,最小值结点的(A)。
A左指针一定为空 B右指针一定为空
C左、右指针均为空 D左、右指针均不为空
6.在散列函数H(k)=kmodm中,一般来讲,m应取(C)。
A奇数 B偶数 C素数 D充分大的数
7.用直接插入排序对下面四个序列进行由小到大排序,元素比较次数最少的是( B )。
A94,32,40,90,80,46,21,69 B21,32,46,40,80,69,90,94
C32,40,21,46,69,94,90,80 D90,69,80,46,21,32,94,40
1.使用双链表存储线性表,其优点是可以(B)。
A提高查找速度 B更方便数据的插入和删除
C节约存储空间 D很快回收存储空间
2.链表不具有的特点是(B)
A.不必事先估计存储空间 B.可随机访问任一元素
C.插入删除不需要移动元素 D.所需空间与线性表长度成正比
3.下面关于线性表的叙述错误的是( D )。
A线性表采用顺序存储必须占用一片连续的存储空间
B线性表采用链式存储不必占用一片连续的存储空间
C线性表采用链式存储便于插入和删除操作的实现
D线性表采用顺序存储便于插入和删除操作的实现
4.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较( D)个结点。
An Bn/2 C(n-1)/2 D(n+1)/2
5.在C或C++语言中,一个顺序栈一旦被声明,其占用空间的大小( A )。
A.已固定 B.不固定 C.可以改变 D.动态变化
6. 两个字符串相等的充要条件是(C )。
A 两个字符串的长度相等 B 两个字符串中对应位置上的字符相等
C 同时具备(A)和(B)两个条件 D 以上答案都不对
8.设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是( C)。
A N0=N1+1 B N0=Nl+N2 C N0=N2+1 D N0=2N1+l
9.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( D )
A.e B.2e C.n2-e D.n2-2e
10.设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为( A )。
A N1-1 B N2-1 C N2+N3 D N1+N3
11.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(D )。
A 空或只有一个结点 B 高度等于其结点数
C 任一结点无左孩子 D 任一结点无右孩子
12.在堆排序和快速排序中,如果从平均情况下排序的速度最快的角度来考虑应最好选择( 快速 )排序,如果从节省存储空间的角度来考虑则最好选择( 堆 )排序。
13.设有以下四种排序方法,则( B )的空间复杂度最大。
A 冒泡排序 B 快速排序 C 堆排序 D 希尔排序
14.数据结构中,与所使用的计算机无关的是数据的(C)
A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构
15.数据的基本单位是( B )。
A. 数据结构 B. 数据元素 C. 数据项 D. 文件
1.已知一个顺序存储的线性表,设每个结点占m个存储单元,若第一个结点的地址为B,则第i个结点的地址为( A )。
A.B+(i-1)*m B.B+i*m C.B-i*m D.B+(i+1)*m
3.若链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用(D)存储方法最节省时间。
A单链表B带头指针的单循环链表
C双链表D带尾指针的单循环链表
4.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个( B )结构。
A栈 B队列 C数组 D线性表
5.用链接方式存储的队列,在进行插入运算时( D).
A.仅修改头指针 B.头、尾指针都要修改
C.仅修改尾指针 D.头、尾指针可能都要修改
6.以下论述正确的是( C)。
A.空串与空格串是相同的 B."tel"是"Teleptone"的子串
C.空串是零个字符的串 D.空串的长度等于1
7.对于完全二叉树中的任一结点,若其右分支下的子孙的最大层次为h,则其左分支下的子孙的最大层次为(C)。
Ah Bh+1 Ch或h+1 D任意
9.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(B )个空指针域。
A 2m-1 B 2m C 2m+1 D 4m
10.设某有向图中有n个顶点,则该有向图对应的邻接表中有( B)个表头结点。
A n-1 B n C n+1 D 2n-1
11.二叉排序树中左子树上所有结点的值均( A)根结点的值。
A < B > C = D !
=
12.静态查找与动态查找的根本区别在于(B)。
A它们的逻辑结构不一样 B施加在其上的操作不同
C所包含的数据元素的类型不一样 D存储实现不一样
13.散列技术中的冲突指的是(D)。
A两个元素具有相同的序号 B两个元素的键值不同,而其他属性相同
C数据元素过多 D不同键值的元素对应于相同的存储地址
14.一组记录的关键码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为(A )。
A{40,38,46,56,79,84} B{40,38,46,79,56,84}
C{40,38,46,84,56,79} D{84,79,56,46,40,38}
15.对一个算法的评价,不包括如下( B)方面的内容。
A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度
1.单链表的存储密度( C )。
A.大于1 B.等于1 C.小于1 D.不能确定
2.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为( D)。
A O(log2n) B O
(1) C O(n2) D O(n)
3.在下列链表中不能从当前结点出发访问到其余各结点的是( C )。
A.双向链表 B.单循环链表 C.单链表 D.双向循环链表
4.从一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行下列( D)命令。
A.x=top;top=top->next; B.top=top->next;x=top->data;
C.x=top->data; D.x=top->data;top=top->next;
5.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为( D)。
A top=top+1; B top=top-1; C top->next=top; D top=top->next;
6.字符串的长度是指( C)。
A 串中不同字符的个数 B 串中不同字母的个数
C 串中所含字符的个数 D 串中不同数字的个数
7.数组的逻辑结构不同于下列( D)的逻辑结构。
A 线性表 B 栈 C队列 D 树
8.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是( D)。
A 空或只有一个结点 B 高度等于其结点数
C 任一结点无左孩子 D 任一结点无右孩子
10.下图为由7个顶点组成的无向图。
从顶点1出发,对它进行广度优先遍历得到的顶点序列是_____C______。
A、1534267 B、1726453 C、1354276 D、1247653
11.下列各种排序算法中平均时间复杂度为O(n2)是( D)。
A 快速排序 B 堆排序 C 归并排序 D 冒泡排序
====================================================================
2.对线性表,在下列哪种情况下应当采用链表表示?
( B)
A.经常需要随机地存取元素 B.经常需要进行插入和删除操作
C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变
3.若用一个大小为6的数组来实现循环队列,且当前front和rear的值分别为3和0,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别为( B)。
A.5和1 B.4和2 C.2和4 D.1和5
5. 设一棵三叉树中有2个度数为1的结点,2个度数为2的结点,2个度数为3的结点,则该三叉链权中有( C)个度数为0的结点。
A 5 B 6 C 7 D 8
6.任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序(A)。
A肯定不发生改变 B肯定发生改变 C不能确定 D有时发生变化
7.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为( A)。
A O(n+e) B O(n2) C O(ne) D O(n3)
8.下面关于工程计划的AOE网的叙述中,不正确的是(B)
A关键活动不按期完成就会影响整个工程的完成时间
B任何一个关键活动提前完成,那么整个工程将会提前完成
C所有的关键活动都提前完成,那么整个工程将会提前完成
D某些关键活动若提前完成,那么整个工程将会提前完
9.下列命题正确的是(B)。
A一个图的邻接矩阵表示是唯一的,邻接表表示也唯一
B一个图的邻接矩阵表示是唯一的,邻接表表示不唯一
C一个图的邻接矩阵表示不唯一的,邻接表表示是唯一
D一个图的邻接矩阵表示不唯一的,邻接表表示也不唯一
10. 设某散列表的长度为100,散列函数H(k)=k%P,则P通常情况下最好选择( B)。
A 99 B 97 C 91 D 93
11.设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是( D)。
A F,H,C,D,P,A,M,Q,R,S,Y,X
B P,A,C,S,Q,D,F,X,R,H,M,Y
C A,D,C,R,F,Q,M,S,Y,P,H,X
D H,C,Q,P,A,M,S,R,D,F,X,Y
==================================================================
1.线性表的链式链式存储结构是一种( B )的存储结构。
A、随机存取 B、顺序存取 C、索引存取 D、HASH存取
3.设计一个判别表达式中左右括号是否配对的算法,采用(B)数据结构最佳
A顺序表 B栈 C队列 D链表
4.设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是( C)。
A6 B4 C3 D2
5.设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为( D)
A.front=front+1 B.front=(front+1)%(m