数据结构与算法分析—期末复习题及答案(8)

2019-06-17 11:27

}

数据结构试卷(八)

一、选择题(30分)

1. 1. 字符串的长度是指( )。 (A) 串中不同字符的个数 (B) 串中不同字母的个数 (C) 串中所含字符的个数 (D) 串中不同数字的个数 2. 2. 建立一个长度为n的有序单链表的时间复杂度为( ) (A) O(n) (B) O(1) (C) O(n2) (D) O(log2n) 3. 3. 两个字符串相等的充要条件是( )。 (A) 两个字符串的长度相等 (B) 两个字符串中对应位置上的字符相等 (C) 同时具备(A)和(B)两个条件 (D) 以上答案都不对 4. 4. 设某散列表的长度为100,散列函数H(k)=k % P,则P通常情况下最好选择( )。 (A) 99 (B) 97 (C) 91 (D) 93

5. 5. 在二叉排序树中插入一个关键字值的平均时间复杂度为( )。

2

(A) O(n) (B) O(1og2n) (C) O(nlog2n) (D) O(n)

6. 6. 设一个顺序有序表A[1:14]中有14个元素,则采用二分法查找元素A[4]的过程中

比较元素的顺序为( )。 (A) A[1],A[2],A[3],A[4] (B) A[1],A[14],A[7],A[4] (C) A[7],A[3],A[5],A[4] (D) A[7],A[5] ,A[3],A[4]

7. 7. 设一棵完全二叉树中有65个结点,则该完全二叉树的深度为( )。 (A) 8 (B) 7 (C) 6 (D) 5

8. 8. 设一棵三叉树中有2个度数为1的结点,2个度数为2的结点,2个度数为3的结

点,则该三叉链权中有( )个度数为0的结点。 (A) 5 (B) 6 (C) 7 (D) 8

9. 9. 设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,

c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为( )。 (A) aedfcb (B) acfebd (C) aebcfd (D) aedfbc 10. 10. 队列是一种( )的线性表。 (A) 先进先出 (B) 先进后出 (C) 只能插入 (D) 只能删除

二、判断题(20分)

1. 1. 如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。( ) 2. 2. 设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。( ) 3. 3. 分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存

在的块号,然后再在相应的块内进行顺序查找。( ) 4. 4. 二维数组和多维数组均不是特殊的线性结构。( )

5. 5. 向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。( ) 6. 6. 如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。( ) 7. 7. 非空的双向循环链表中任何结点的前驱指针均不为空。( )

8. 8. 不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂

度均为O(n)。( )

9. 9. 图的深度优先遍历算法中需要设置一个标志数组,以便区分图中的每个顶点是否

被访问过。( )

10. 10. 稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。( )

三、填空题(30分)

1. 1. 设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则以d=4为增

量的一趟希尔排序结束后的结果为_____________________________。

2. 2. 下面程序段的功能是实现在二叉排序树中插入一个新结点,请在下划线处填上正

确的内容。

typedef struct node{int data;struct node *lchild;struct node *rchild;}bitree; void bstinsert(bitree *&t,int k) {

if (t==0 ) {____________________________;t->data=k;t->lchild=t->rchild=0;} else if (t->data>k) bstinsert(t->lchild,k);else__________________________; }

3. 3. 设指针变量p指向单链表中结点A,指针变量s指向被插入的结点X,则在结点A

的后面插入结点X需要执行的语句序列:s->next=p->next; _________________;。

4. 4. 设指针变量head指向双向链表中的头结点,指针变量p指向双向链表中的第一个

结点,则指针变量p和指针变量head之间的关系是p=_________和head=__________(设结点中的两个指针域分别为llink和rlink)。

5. 5. 设某棵二叉树的中序遍历序列为ABCD,后序遍历序列为BADC,则其前序遍历

序列为__________。

6. 6. 完全二叉树中第5层上最少有__________个结点,最多有_________个结点。 7. 7. 设有向图中不存在有向边,则其对应的邻接矩阵A中的数组元素A[i][j]的

值等于____________。

8. 8. 设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则第4趟直接

选择排序结束后的结果为_____________________________。

9. 9. 设连通图G中有n个顶点e条边,则对应的最小生成树上有___________条边。 10. 10. 设有一组初始记录关键字序列为(50,16,23,68,94,70,73),则将它

们调整成初始堆只需把16与___________相互交换即可。

四、算法设计题(20分)

1. 1. 设计一个在链式存储结构上统计二叉树中结点个数的算法。 2. 2. 设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。

数据结构试卷(八)参考答案

一、选择题 1.C 2.C 3.C 4.B 5.B 6.C 7.B 8.C 9.A 10.A

二、判断题

1.对 2.错 3.对 4.错 5.错 6.对 7.对 8.对 9.对 10.对

三、填空题

1. 1. (49,13,27,50,76,38,65,97)

2. 2. t=(bitree *)malloc(sizeof(bitree)),bstinsert(t->rchild,k) 3. 3. p->next=s

4. 4. head->rlink,p->llink 5. 5. CABD 6. 6. 1,16 7. 7. 0

8. 8. (13,27,38,50,76,49,65,97) 9. 9. n-1 10. 10. 50

四、算法设计题

1. 1. 设计一个在链式存储结构上统计二叉树中结点个数的算法。

void countnode(bitree *bt,int &count) {

if(bt!=0)

{count++; countnode(bt->lchild,count); countnode(bt->rchild,count);} }

2. 2. 设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。

typedef struct {int vertex[m]; int edge[m][m];}gadjmatrix;

typedef struct node1{int info;int adjvertex; struct node1 *nextarc;}glinklistnode; typedef struct node2{int vertexinfo;glinklistnode *firstarc;}glinkheadnode; void adjmatrixtoadjlist(gadjmatrix g1[ ],glinkheadnode g2[ ]) {

int i,j; glinklistnode *p;

for(i=0;i<=n-1;i++) g2[i].firstarc=0; for(i=0;i<=n-1;i++) for(j=0;j<=n-1;j++) if (g1.edge[i][j]==1) {

p=(glinklistnode *)malloc(sizeof(glinklistnode));p->adjvertex=j; p->nextarc=g[i].firstarc; g[i].firstarc=p;

p=(glinklistnode *)malloc(sizeof(glinklistnode));p->adjvertex=i; p->nextarc=g[j].firstarc; g[j].firstarc=p; } }

数据结构试卷(九)

一、选择题(30分)

1.下列程序段的时间复杂度为( )。

for(i=0; i

for(i=0; i

2.设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( )个元素。 (A) n-i (B) n+l -i (C) n-1-i (D) i

3.设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为( )。 (A) N1-1 (B) N2-1 (C) N2+N3 (D) N1+N3 4.利用直接插入排序法的思想建立一个有序线性表的时间复杂度为( )。

2

(A) O(n) (B) O(nlog2n) (C) O(n) (D) O(1og2n)

5.设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为( )。

(A) p->right=s; s->left=p; p->right->left=s; s->right=p->right; (B) s->left=p;s->right=p->right;p->right=s; p->right->left=s; (C) p->right=s; p->right->left=s; s->left=p; s->right=p->right; (D) s->left=p;s->right=p->right;p->right->left=s; p->right=s; 6.下列各种排序算法中平均时间复杂度为O(n2)是( )。 (A) 快速排序 (B) 堆排序 (C) 归并排序 (D) 冒泡排序

7.设输入序列1、2、3、…、n经过栈作用后,输出序列中的第一个元素是n,则输出序列中的第i个输出元素是( )。 (A) n-i (B) n-1-i (C) n+l -i (D) 不能确定

8.设散列表中有m个存储单元,散列函数H(key)= key % p,则p最好选择( )。 (A) 小于等于m的最大奇数 (B) 小于等于m的最大素数 (C) 小于等于m的最大偶数 (D) 小于等于m的最大合数

9.设在一棵度数为3的树中,度数为3的结点数有2个,度数为2的结点数有1个,度数为1的结点数有2个,那么度数为0的结点数有( )个。 (A) 4 (B) 5 (C) 6 (D) 7 10.设完全无向图中有n个顶点,则该完全无向图中有( )条边。 (A) n(n-1)/2 (B) n(n-1) (C) n(n+1)/2 (D) (n-1)/2 11.设顺序表的长度为n,则顺序查找的平均比较次数为( )。 (A) n (B) n/2 (C) (n+1)/2 (D) (n-1)/2

12.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过( )次比较。 (A) 1 (B) 2 (C) 3 (D) 4

13.设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找,则其平均查找长度为( )。 (A) 6 (B) 11 (C) 5 (D) 6.5

14.设有向无环图G中的有向边集合E={<1,2>,<2,3>,<3,4>,<1,4>},则下列属于该有向图G的一种拓扑排序序列的是( )。 (A) 1,2,3,4 (B) 2,3,4,1 (C) 1,4,2,3 (D) 1,2,4,3

15.设有一组初始记录关键字序列为(34,76,45,18,26,54,92),则由这组记录关键字生成的二叉排序树的深度为( )。 (A) 4 (B) 5 (C) 6 (D) 7 二、填空题(30分)

1. 1. 设指针p指向单链表中结点A,指针s指向被插入的结点X,则在结点A的前

面插入结点X时的操作序列为:

1) s->next=___________;2) p->next=s;3) t=p->data; 4) p->data=___________;5) s->data=t;

2. 2. 设某棵完全二叉树中有100个结点,则该二叉树中有______________个叶子结

点。

3. 3. 设某顺序循环队列中有m个元素,且规定队头指针F指向队头元素的前一个位

置,队尾指针R指向队尾元素的当前位置,则该循环队列中最多存储_______队列元素。

4. 4. 对一组初始关键字序列(40,50,95,20,15,70,60,45,10)进行冒泡排

序,则第一趟需要进行相邻记录的比较的次数为__________,在整个排序过程中最多需要进行__________趟排序才可以完成。

5. 5. 在堆排序和快速排序中,如果从平均情况下排序的速度最快的角度来考虑应最

好选择_________排序,如果从节省存储空间的角度来考虑则最好选择________排序。 6. 6. 设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录

关键字构造的二叉排序树的平均查找长度是_______________________________。 7. 7. 设一棵二叉树的中序遍历序列为BDCA,后序遍历序列为DBAC,则这棵二叉

树的前序序列为____________________。

8. 8. 设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为7、19、

2、6、32、3、21、10,根据这些频率作为权值构造哈夫曼树,则这棵哈夫曼树的高度为________________。

9. 9. 设一组记录关键字序列为(80,70,33,65,24,56,48),

则用筛选法建成的初始堆为_______________________。 10. 10. 设无向图G(如右图所示),则其最小生成树上所有边的

权值之和为_________________。

三、判断题(20分)

1. 1. 有向图的邻接表和逆邻接表中表结点的个数不一定相等。( ) 2. 2. 对链表进行插入和删除操作时不必移动链表中结点。( ) 3. 3. 子串“ABC”在主串“AABCABCD”中的位置为2。( )

4. 4. 若一个叶子结点是某二叉树的中序遍历序列的最后一个结点,则它必是该二叉树

的先序遍历序列中的最后一个结点。( )

5. 5. 希尔排序算法的时间复杂度为O(n2)。( )

6. 6. 用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与

图中边数有关。( )

7. 7. 中序遍历一棵二叉排序树可以得到一个有序的序列。( )

8. 8. 入栈操作和入队列操作在链式存储结构上实现时不需要考虑栈溢出的情况。( ) 9. 9. 顺序表查找指的是在顺序存储结构上进行查找。( ) 10.10.堆是完全二叉树,完全二叉树不一定是堆。( )

五、算法设计题(20分)

1. 1. 设计计算二叉树中所有结点值之和的算法。 2. 2. 设计将所有奇数移到所有偶数之前的算法。 3. 3. 设计判断单链表中元素是否是递增的算法。

数据结构试卷(九)参考答案

一、选择题 1.A 2.A 3.A 4.C 5.D 6.D 7.C 8.B 9.C 10.A 11.C 12.C 13.D 14.A 15.A

二、填空题

1. 1. p->next,s->data 2. 2. 50 3. 3. m-1 4. 4. 6,8

5. 5. 快速,堆 6. 6. 19/7 7. 7. CBDA 8. 8. 6

9. 9. (24,65,33,80,70,56,48) 10. 10. 8

三、判断题

1.错 2.对 3.对 4.对 5.错 6.错 7.对 8.对 9.错 10.对 四、算法设计题

1. 1. 设计计算二叉树中所有结点值之和的算法。

void sum(bitree *bt,int &s) {

if(bt!=0) {s=s+bt->data; sum(bt->lchild,s); sum(bt->rchild,s);} }

2. 2. 设计将所有奇数移到所有偶数之前的算法。

void quickpass(int r[], int s, int t) {

int i=s,j=t,x=r[s]; while(i

while (i

r[i]=x; }


数据结构与算法分析—期末复习题及答案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015新作文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: