全真模拟试题(二)
一、单项选择题(在每个小题的4个备选答案中,选出正确的答案,并将其号码填在题后的括号内。每小题2分,共24分)
1.一个具有n个顶点的无向完全图的边数为( )
①n(n+1)/2 ②n(n-1)/2 ③n(n-1) ④n(n+1)
2.在索引顺序表中查找一个元素,可用的且最快的方法是( )
①用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找
②用顺序查找法确定元素所在块,再用二分查找法在相应块中查找
③用二分查找法确定元素所在块,再用顺序查找法在相应块中查找
④用二分查找法确定元素所在块,再用二分查找法在相应块中查找
3.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( )存储方式最节省运算时间。
单链表 ②双链表
③带头结点的双循环链表 ④容量足够大的顺序表
4.串是( )
①一些符号构成的序列 ②有限个字母构成的序列
③一个以上的字符构成的序列 ④有限个字符构成的序列
5.堆排序在最坏情况下,其时间复杂性为( )
O(nlog2n) ②O(n2)
③O(log2n2) ④O(log2n)
6.快速排序的记录移动次数( )比较次数,其总执行时间为O(nlog2n)。
大于 ②大于等于 ③小于等于 ④小于
7.一棵二叉树有n个结点,要按某顺序对该二叉树中的结点编号,(号码为1-n),编号须具有如下性质:二叉树中任一结点V,其编号等于其左子树中结点的最大编号加1。而其右子树中结点的最小编号等于V的编号加1。试问应按( )遍历顺序编号。
前根 ②中根 ③后根 ④层次
8.3个结点可构成( )个不同形态的二叉树。
2 ②3 ③4 ④5
9.对有n个记录的有序表采用二分查找,其平均查找长度的量级为( )
O(log2n) ②O(nlog2n) ③O(n) ④O(n2)
10.对有n个记录的表按记录键值有序的顺序建立二叉树,在这种情况下,其平均查找长度的量级为( )
O(n) ②O(nlog2n) ③O(1) ④(log2n)
11.栈操作的原则是( )
先进先出 ②后进先出 ③栈顶插入 ④栈顶删除
12.设矩阵A是一对称矩阵(aij=aji,1<=i,j<=8),若每个矩阵元素占3个单元,将其上三角部分(包括对角线)按行序为主序存放在数组B中,B的首地址为1000,则矩阵元素a67的地址为( )
1031 ②1093 ③1096 ④1032
二、判断题(判断下列各题是否正确,正确在括号内打“√”,错的打“×”。每小题1分,共10分)
1.如果两个串含有相同的字符,则这两个串相等。 ( )
2.数组可以看成线性结构的一种推广,因此可以对它进行插入、删除等运算。 ( )
3.在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每一块中元素个数有关。( )
4.在顺序表中取出第i个元素所花费的时间与i成正比。 ( )
5.在栈满情况下不能作进栈运算,否则产生“上溢”。 ( )
6.二路归并排序的核心操作是将两上有序序列归并为一个有序序列。 ( )
7.对任意一个图,从它的某个顶点出发,进行一次深度优先或广度优先搜索,即可访问图的每个顶点.( )
8.二叉排序树或者是一棵空二叉树,或者是具有下列性质的二叉树:若它的左子树非空,则根结点的值大于其左孩子的值;若它的右子树非空,则根结点的值小于其右孩子的值。( )
9.在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该算法是不稳定的。( )
10.一个有向图的邻接表和逆邻接表中表结点的个数一定相等。 ( )
三、填空题(每空2分,共26分)
1.在带有头结点的单链表L中,若要删除第一个结点,则需执行下列三条语句:________;L->next=U->next;free(U);
2.有一个长度为20的有序表采用二分查找方法进行查找,共有______个元素的查找长度为3。
3.采用冒泡排序对有n个记录的表A按键值递增排序,若L的初始状态是按键值递增,则排序过程中记录的比较次数为_____。若A的初始状态为递减排列,则记录的交换次数为_______。
4.在无头结点的双链表中,指针P所指结点是第一个结点的条件是______。
5.G为无向图,如果从G的某个顶点出发,进行一次广度优先搜索,即可访问图的每个顶点,则该图一定是_____图。
6.如果一个有向图中没有______,则该图的全部顶点可能排成一个拓扑序列。
7.深度为8(根的层次号为1)的满二叉树有______个叶子结点。
8.将一棵有100个结点的完全二叉树按层编号,则编号为49的结点X,其双亲PARENT(X)的编号为_______。
9.设某闭散列表HT未满,散列函数H(KEY)为键值第一字母在字母表中的序号,处理冲突方法为线性探测法,请在下列算法划线处填上适当内容,以实现按键值第一字母的顺序输出闭散列表中所有键值的算法。
void printword(keytype HT[m])
{ for(i=1;i<=26;i++)
{ j=i;
while(____________________)
{ if (____________________) printf(“datatype”,HT[j]);
j=(j+1)% m;
}
}
}
10.设有一个链队,结点结构为data|next,front为队头指针,rear为队尾指针,当执行入队操作时需执行下列语句:
malloc(p);p->data=x; p->next=NULL;
________________;
________________;
四、应用题(共26分)
1.有向图G的邻接表如下图所示,若删去图G中的边<V3,V6>和<V4,V5>,试画出修改后图的邻接表。(4分)
顶点 入度
V1
0
V2
1
V3
4
V4
0
V5
1
V6
1
∧
2
3
∧
6
3
3
1
∧
5
∧
2.有向图如下图所示,写出以V1为出发点对图进行深度优先搜索所得到的所有可能的访问序列。(4分)
3.对于键值序列(49,38,65,97,76,13,27,50),使用堆排序算法完成排序过程。要求:
⑴画出初始堆(用二叉树表示)。
⑵画出分别输出13,27后重建的两个堆。(5分)
4.一个深度为d(根的层次号为1)的满K叉树有如下性质:第d层上的结点都是叶子结点,其余各层上的每个结点都有K棵非空子树。如果从根这一层开始从左到右顺序逐层对全部结点编号,且根结点的编号为1,问编号为n的结点有右兄弟的条件是什么?其右兄弟的编号是多少?(3分)
5.给定权值{5,10,12,15,30,40},构造相应的哈夫曼树,要求写构造歩骤。(4分)
6.已知一表为(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec),按表中顺序依次插入初始为空的二叉排序树,要求:
⑴画出建立的二叉排序树。(4分)
⑵求出在等概率情况下查找成功的平均查找长度。(2分)
五、设计题(共14分)
1.设有一单链表L,结点结构为data|next,结点个数至少3个,试画出链表L的结构图,并编写算法判断该单链表L中的元素是否成等差关系,即:设各元素值次为a1,a2,a3,…,an,判断ai+1-ai=ai-ai-1是否成立,其中i满足2<=i<=n-1.(8分)
2.设有一棵二叉树以二叉链表作为存储结构,结点结构为lchild|data|rchild,其中data域中存放一个字符,设计一个算法按前根遍历顺序仅打印出data域为数字的字符(即‘0’<=data<=‘9’)(6分)