《数据结构》模拟试卷四
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟试卷四
一、选择题(每小题2分,共16分)
1.一个栈的输入序列为12345,则下列序列中是栈的输出序列的是。
a.2 3 4 1 5 b. 5 4 1 3 2
c.3 1 2 4 5 d.1 4 2 5 3
2.若某线性表最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用下列存储方式最节省时间。
a. 单链表 b.双链表
c.带头结点的双循环链表 d.单循环链表
3.二叉树在线索化后,仍不能有效求解的问题是。
a.先序线索二叉树中求先序后继 b. 中序线索二叉树中求中序后继
c. 中序线索二叉树中求中序前趋 d.后序线索二叉树中求后序后继
4.求最短路径的FLOYD算法的时间复杂度为。
a.O(n) b.O(n+e)
c.O(n2) d.(n3)
5.下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是。
a.快速排序 b. 希尔排序
c.冒泡排序 d.堆排序
6. 下列排序算法中,每一趟都能选出一个元素放在其最终位置上,并且
是不稳定的。
a.冒泡排序 b. 希尔排序
c.直接选择排序 d.直接插入排序
7.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为 -1,右孩子的平衡因子为0,则应作型调整以使其平衡。
a. LL b. LR c. RL d. RR
8. 数据表A中有100O0个元素,如果仅要求求出其中最大的10个元素,则采用
排序算法最节省时间。
a.堆排序 b.希尔排序
c. 快速排序 d.直接选择排序
二、判断题(每小题1分,井10分)
1.()线性表的唯一存储形式是链表。
2.()已知指针P指向链表L中的某结点,执行语句P := P^.next不会删除该链表中的结点。
3.()在键队列中,即使不设置尾指针也能进行入队操作。
4.()如果一个串中的所有字符均在另一串中出现,则说前者是后者的子串。
5.()设与一棵树T所对应的二叉树为BT,则与T中的叶子结点所对应的BT
中的结点也一定是叶子结点。
6.()9阶B树中,除根以外的任何一个非叶子结点中的关键字数目均在5~ 9之间。
7.()任一AOE网中至少有一条关键路径,且是从源点到汇点的路径中最长
的一条。
8.()若图G的最小生成树不唯一,则G的边数一定多于n-1,并且权值最小的边有多条(其中n为G的顶点数)。
9.()给出不同的输入序列建造二叉排序树,一定得到不同的二叉排序树。 10.()由于希尔排序的最后一趟与直接插入排序过程相同,因此前者一定比后者花费的时间多。
三、填空题(每空2分,共20分)
1.带头结点的双循环链表L为空表的条件是。
2.在双链表中,在指针P所指结点前面插入一个结点到的语句序列是:
S^.next := P; S^.prior := P^.prior; P^.prior := S;。
3.对广义表A =(x,((a,b),c,d)的运算head(head(tail(A)))的结果是
。
4.已知完全二叉树的第7层有10个叶子结点,则整个二叉树的结点数最多是
。
5. 有n个结点并且其高度为n的二叉树的数目是。
6.循环队列采用数组data[1..n]来存储元素的值,并用front和rear分别作为其头尾指针。为区分队列的满和空,约定:队中能够存放的元素个数最大为n-1,也即至少有一个元素空间不用,则在任意时刻,至少可以知道一个空的元素的下
标是。入队时,可用语句求出新元素在数组data中的下标。 7.高度为8的平衡二叉树的结点数至少是。
8.在有 n个顶点的有向图中,每个顶点的度最大可达。
9.数组A[1..10,1..1O]的每个元素占5个单元,将其按列优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,6]的地址为。
四、解答下列各题(26分)
1.已知二叉树的中序序列和后序序列如下,画出该二叉树。(5分)
中序序列为:DCEFBHGAKJLIM
后序序列为:DFECHGBKLJMIA
2. 以下面数据作为叶子结点的权值构造一棵哈夫曼树,并计算出其带权路径长度。
(6分)
{5,6,7,8,9,10,15,18,22}
3.对下面数据表,写出采用快速排序算法排序的每一趟的结果,并标明第一趟排序过程中的数据移动情况。(5分)
(50,12,20,31,1,5,44,166,61,100,30,80,150,4,8)4.求出下图的所有拓扑序列,并指出哪一个是拓扑排序算法的运行结果(设算法中搜索顶点的邻接点均是按从小到大的次序进行的)。(5分)
5.画出在递增有序表A[1..21]中进行H分查找的判定树。(5分)
五、算法设计(共28分)
1.已知带头结点的单循环链表L中至少有一个元素,设计算法判断L中各元素的值是否均是其序号的两倍,若满足,返回true,否则返回false,同时返回该链表
中的结点数。(6分)
2.已知数组A[1..nj的元素递增有序。设计算法以数组A中的元素构造一棵二又排序树,并使其满足平衡二叉树的条件。(8分)
3.设计算法,打印连通图G中每个顶点一次且仅一次,并要求其打印次序满足条件:距顶点VO近的顶点先于距离远的顶点(以边数为单位)。(8分)4.在下面冒泡排序算法中填入适当内容,以使该算法在发现有序时能及时停止。
(6分)
Procedure bubble(var a:array[l..n] of Integer);
Begin
i := 1;
repeat
exchanged:=false ;
for j := n downto do
if a[j] < a[j-1] then
begin
a[j] <==> a[j—1];{交换}
;
end;
;
until;
End;