浙大城院数据结构期末模拟4 联系客服

发布时间 : 星期五 文章浙大城院数据结构期末模拟4更新完毕开始阅读b60bb820ddccda38376baf6c

模拟试卷4

得分 一.选择题 (本大题共 20 题,每题 1 分,共 20 分)

1.算法的时间复杂度取决于 。

A.问题的规模 B.变量的多少 C.问题的难度 D.A和B 2. 算法能正确的实现预定功能的特性为算法的 。

A. 正确性 B.易读性 C.健壮性 D. 高效性 3.下面程序段的时间复杂度是 。

For(int i=0; i

For(int j=0; j

A[i][j]=0;

A.O(n) B.O(n2) C.O(m+n) D.O(m*n) 4. 数据的物理结构主要包含 这几种结构。

A.顺序结构和链表结构 B.线性结构和非线性结构 C.动态结构和静态结构

D.集合、线性结构、树形结构、图形结构

5. 在下列存储结构中,最适合实现在线性表中进行随机访问的是 。

A. 数组 B. 双向链表 C. 单向链表 D. 循环链表 6. 与单链表相比,双链表的优点之一是 。

A.可以由最后一个结点找到头结点 B.可随机访问

C.插入、删除操作更加简单 D.访问前驱结点更加方便

7.如果对线性表的运算只有2种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 。

A.顺序表 B.单链表

C.双向链表

D.具有表尾指针的循环单链表

8.在表头指针为head且表长大于1的单向循环链表中,指针p指向表中的某个结点,若p->next->next==head,则 。

A. p指向头结点 B. p指向尾结点

C.*p的直接后继是头结点 D.*p的直接后继是尾结点 9.带表头附加结点的单链表head为空的判断条件是 。 A. head==NULL B. head->next==NULL C. head->next==head D. head!=NULL 10. 以下不是栈的基本运算的是 。

A.插入元素到栈顶 B. 删除栈底元素

第 1 页 共 5 页

C.判断栈是否为空 D. 将栈置为空栈 11. 若进栈序列为a、b、c、d,进栈过程中可以出栈,则下列不可能的一个出栈序列是 。 A. a, d, c, b B. b, c, d, a C. c, a, d, b D. c, d, b, a 12. 在一个链式队列中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算是 。 A. f->next=s; f=s; B. r->next=s; r=s;

C. s->next=s; r=s; D. s->next=f; f=s; 13. 下列关于线性表、栈和队列的叙述,错误的是 。

A.线性表是给定的n(n必须大于零)个元素组成的序列 B.线性表允许在表的任何位置进行插入和删除操作 C.栈只允许在一端进行插入和删除操作

D.队列只允许在一端进行插入,另一端进行删除 14.下列有关树的概念错误的是 。 A.一棵树中只有一个无前驱的结点

B.一棵树的度为树中各个结点的度数之和

C.一棵树中,每个结点的度数之和等于结点总数减一 D.一棵树中,每个结点的度数之和等于分支数之和 15.下面关于二叉树正确的叙述是 。

A.二叉树中任何一个结点要么是叶子,要么恰好有俩个子女

B.一棵二叉树中结点个数大于0

C.一棵二叉树中叶子结点的个数等于度为2的结点个数加1

D.二叉树中,任何一个结点的左子树和右子树上的结点个数一定相等 16.深度为h的完全二叉树至少有 个结点,至多有 个结点。

A. (2h-1, 2h-1) B. (2h-1-1, 2h-1) C. (2h-1, 2h) D. (2h-1, 2h)

17. 将二叉树B转换成树T后,B中结点的中序遍历次序就是T中结点的 遍历次序。

A.先根 B. 中根 C.后根 D. 层次 18.具有4个顶点的有向完全图,有 条边。

A. 4 B. 6 C. 8 D. 12 19.对某个无向图的邻接矩阵来说,下列叙述正确的是__________。

A. 若矩阵中非零元素个数大大多于零元素个数,则是稀疏图 B. 矩阵中的非零元素个数等于图中的边数

C. 第i行上的非零元素个数和第i列上的非零元素个数一定相等 D. 第i行与第i列上的非零元素的总数等于顶点vi的度数

20.G是一个非连通无向图,共有28条边,则该图至少有 _________ 个顶点。

A. 8 B. 9 C. 29 D. 30

二.填空题 (本大题共 10 个空,每个空 2 分,共 20 分) 得分

1. 数据结构中的非线性结构主要包含 、 两种结构。

2. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括3方面的内容,分

别是数据的逻辑结构、 和操作(运算)。

3.若对线性表进行的操作主要是插入和删除,则该线性表宜采用 存储结构。

第 2 页 共 5 页

4. 在双向链表中,指针p指向某中间结点,若要删除p结点,应执行操作 。 5. 向一个栈顶指针为top的链栈中插入一个指针s所指的结点时,应执行操作 。 6.已知一棵二叉树的中序遍历序列是bgdaehicf,前序遍历序列是 abdgcehif,则这棵二叉树的后序遍历序列是 ,层次遍历序列是 。 7. 在有向图G中,如果对于每一对顶点vi, vj,vi≠vj,若从vi到vj和从vj到vi都存在路径,则称图G是___________。

8. 一个递归的定义可以用递归函数求解,也可以用非递归函数求解,但单从运行时间来看,通

常递归函数比非递归函数 。

三.解答题 ( 本大题共 2 题,每题 6 分,共 12 分) 得分

1.已知一棵树用广义表表示为A(B(C, D), E(F(G, H)), I) ① 请画出这棵树的树形表示法示意图。

② 设用二叉树方式存储该树,请画出该树的二叉链表存储结构示意图。

2. 设有向图G=(V,E), V={V0,V1,V2,V3,V4,V5}, E={, , , , , , , } ① 请给出图G的邻接矩阵存储结构示意图。 ② 请写出顶点V3的入度与出度。 ③ 请按照上述邻接矩阵存储结构,写出从顶点V0出发进行广度优先遍历得到的顶点访问序列。

四.程序阅读题 (本大题共 3 题,每题 6 分,共 18 分) 得分

1.阅读下列程序,说明算法的功能,并求出其时间复杂度: int f1(int n) {

int i=0, s=0; while (s

i++; s=s+i;

}

return i;

}

2. 阅读下列程序,写出算法的功能: int f2(int x[], int n) {

if (n==0)

return 0;

else

第 3 页 共 5 页

return x[n-1] + f2(x,n-1); }

3. 阅读下列程序段,写出程序执行后堆栈的内容(需说明栈顶位置)。 InitStack(S);

InitQueue(T); Push(S, ’A’); Push(S, ’B’); Push(S, ’C’); Push(S, ’D’); x=Pop(S);

while (!EmptyStack (S)) {

EnQueue(T, x);

x=Pop(S);

}

while (!EmptyQueue (T)) {

x=OutQueue(T);

Push(S, x);

}

五.程序填空题 (本大题共 5 个空,每空 2 分,共 10 分) 得分

下列算法是对具有n个顶点的邻接表表示的有向图G,求序号为num的顶点的度。阅读该算法,在空白处填入适当的语句,使该算法完整。

设邻接表结构定义如下: typedef struct node{ int adjvex;

struct node *next;

} edgenode;

typedef edgenode *adjlist[MaxVertexNum];

算法为: int Degree( adjlist G, int n, int num)

{ // 求n个顶点的有向图G中顶点号为num的顶点的度,并返回该值。 int sum1=0, sum2=0; edgenode *p; p= ;

while (p!=NULL) { //求num的出度 sum1++; p= ; }

for (int i=0; i

while (p!=NULL) {

if (p->adjvex== ) sum2++;

第 4 页 共 5 页

p=p->next; } }

return ; }

六.程序设计题 (本大题共 2 题,每题 10 分,共 20 分) 得分

1.设顺序表L非递减有序,请编写高效率算法从L中删除所有其值重复的元素。 如:顺序表L为 (2,3,3,5,7,7,7,8),执行此算法后L变为(2,3,5,7,8)。 函数原型为:void DelList(List &L) 顺序表结构定义如下:

struct List{

ElemType *list; //动态存储空间的基地址 int size; //线性表当前实际长度

int MaxSize; //当前动态数组分配的长度 };

2.如果两棵二叉树具有相同的树型,则称它们是相似的,如下列两棵二叉树相似。

+

a

*

C

b

f

A B d e

请编写递归函数判断两棵二叉树是否相似,若相似返回1,否则返回0。 函数原型为:int SimilarTrees(BTreeNode *BT1,BTreeNode *BT2) 结点结构定义如下:

struct BTreeNode { ElemType data; BTreeNode *left; BTreeNode *right; };

第 5 页 共 5 页