sum+=i+j;
2.在n个元素的顺序表中删除第i个元素,需要移动n-i个元素。
3.线性表就是每个元素都有唯一的前驱元素和唯一的后继元素。
4.判断顺序储存下堆栈s是空的条件是s.top==0。
5.队列中输出元素的次序总是和输入元素的次序一致。
6.空字符串就是长度为0的字符串。
7.n(n>0)个结点的树有n-1条边。
8.二叉树中第3层结点数至多是4个结点。
9.若用双亲表示法存储树,则无法找到结点的所有孩子结点。
10.满二叉树一定是完全二叉树,反之亦然。
11.5个顶点的无向图最多可能有20条边。
12.连通图的连通分量就是它自己。
13.有向图各顶点入度之和就等于边的数量。
14.不连通的图不能用深度优先遍历各个顶点。
15.图的生成树包含了图的全部顶点。
16.一般来说,二分查找比顺序查找快。
17.n(n>0)个结点的二叉排序树至多有log2n层。
18.对二叉树进行中序遍历得到的序列一定有序表。
19.二叉排序树一般用于查找某个元素。
20.序列{12,23,15,24,26,14,16,30,27}是一个堆。
1.算法分析的目的是分析算法的效率以求改进,算法分析的两个主要方面是__________。
A空间复杂性和时间复杂性
B.正确性和简明性
C.可读性和文档性
D.数据复杂性和程序复杂性
2.判定一个循环队列QU(最多元素为m)为空队列的条件是___________。
A.QU->front==QU->rear
B.QU->front!
=-QU->rear
C.QU->front==(QU->rear+1)%m
D.QU->front!
=(QU->rear+1)%m
3.在一个单链表中,已知p所指结点不是最后结点,在p之后插入s所指结点,则执行_____。
A.s->next=p;p->next=s; B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s; D.p->next=s;s->next=p;
4.数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到10,从首地
址100开始连续存放在存储器内,存放该数组至少需要的单元素是____________________。
A.80 B.180 C.320 D.420
5.在下列叙述中,正确的是_____________。
A.数据的逻辑结构要考虑数据元素本身的内容
B.不同类型的数据元素可以归类到同一的逻辑结构中
C.数据元素之间的关联关系在数据的逻辑结构中体现
D.数据元素是数据不可分割的最小标识单位
6.将递归算法转换成对应的非递归算法时,通常需要使用____________。
A.栈B.队列C链表D树
7.按照二叉树的定义,具有2个及2个以下结点的二叉树有_______________种。
A.2B.3 C.4D.5
8.已知一有向图的邻接表存储结构如图所示
(a)根据有向图的深度优先遍历算法,从v1顶点出发,所得到的顶点序列是___________。
A.v1,v2,v3,v5,v4 B.v1,v2,v3,v4,v5
C.v1,v3,v4,v5,v2 D.v1,v4,v3,v5,v2
(b)根据有向图的宽度优先遍历算法,从v1顶点出发,所得到的顶点序列是___________。
A.v1,v2,v3,v4,v5 B.v1,v3,v2,v4,v5
C.v1,v2,v3,v5,v4 D.v1,v4,v3,v5,v2
10.如果某二叉树的前序为stuwv,中序为uwtvs,那么该二叉树的后序___________。
A.uwvts B.vwuts C.wutsv D.wuvts
11.在一个具有n个顶点的无向图中,要连通全部顶点至少需要___________ 条边。
A.n B.n+1 C.n/2 D.n-1
12.串是一种特殊的线性表,其特殊性体现在_____________。
A.只能顺序存储 B.数据元素是一个字符
C.可以链接存储 D.数据元素可以是多个字符
13.在循环双链表的p所指结点之后插入s所指结点的操作是_________________。
A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;
B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;
D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;
14.快速排序方法在___________情况下最不利于发挥其长处。
A.要排序的数据量太大 B.要排序的数据中含有多个值
C.要排序的数据已基本有序 D.要排序的数据个数为奇数
15.在待排序的元素序列基本有序的前提下,效率最高的排序方法是_______________。
A.插入排序 B.选择排序 C.快速排序D.归并排序
16.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下,则采用的排序方法是_______________。
(1)25,84,21,47,15,27,68,35,20
(2)20,15,21,25,47,27,68,35,84
(3)15,20,21,25,35,27,47,68,84
(4)15,20,21,25,27,35,47,68,84
A.选择排序 B.希尔排序 C.归并排序D.快速排序
17.关于图的邻接矩阵,下列结论_____________是正确的。
A.有向图的邻接矩阵总是不对称的
B.无向图的邻接矩阵总是不对称的
C.有向图的邻接矩阵可以是对称的,也可以是不对称的
D.无向图的邻接矩阵可以是不对称的,也可以是对称的
18.在长度为n的双链表中某结点(已知其地址)之前,插入一个新结点的时间复杂度是_________。
A.O(n)B.O
(1)C.O(log2n)D.O(n2)
19.给定字符串“this_is_a_string”,如果用一个字节存储一个字符,那么存储这个串需要_______(a)位存储空间,而用Huffman编码,则只需要____________________(b)位存储空间。
A.36B.49C.70D.128
四、综合计算简答题(共5小题,共27分)
1.举出树结构的两个应用实例,并说明树的某个操作对应在实例中的意义。
(5分)
2.判断序列(16,19,10,15,4,23,36,20)是否为(小顶)堆?
为什么?
如果不是,请按照建立堆的思想把它调整为堆,并用图表示建堆的过程。
(6分)
3.下面递归函数用于在二叉排序树T中的查找x元素。
请填空。
(4分)
PositionFind(ElementTypeX,SearchTreeT)
{
if(T==NULL)
returnNULL;/*notfoundinanemptytree*/
if()
returnFind(X,T->Left);/*searchleftsubtree*/
else
if(X>T->Element)/*iflargerthanroot*/
return;
else/*ifX==root*/
returnT;/*found*/
}
4.设将整数a、b、c、d依次进栈,而只要栈非空,就可以将出栈操作夹入其中。
请问:
能否得到出栈序列adbc和dcba?
为什么?
(4分)
5.设无向图为G=(V,E),其中V={v1,v2,v3,v4},E={(v1,v2),(v3,v4),(v4,v1),(v2,v3),(v1,v3)}。
请回答下列问题:
(8分)
(1)画出该图。
(2分)
(2)分别写出每个顶点的度。
(2分)
(3)画出相应的邻接矩阵和邻接表。
(4分)
浙江大学远程教育学院试卷
模拟考卷
(2)
课程代码及名称___07040320数据结构与算法___考试时间:
90分钟
注意:
所有试题答案均按题目编号写在答题卷上。
一.单项选择题(每项选择1.5分,共60分)
1、数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间②和运算等的学科。
①A.操作对象B.计算方法C.逻辑存储D.数据映象
②A.结构B.关系C.运算D.算法
2、在数据结构中,从逻辑上可以把数据结构分成①。
①A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.逻辑结构和物理结构D.线性结构和非线性结构
3、算法分析的目的是①,算法分析的两个主要方面是②。
1A.找出数据结构的合理性
B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进
D.分析算法的易懂性和文档性
②A.空间复杂性和时间复杂性
B.正确性和简明性
C.数据复杂性和程序复杂性
D.可读性和文档性
4、在以下的叙述中,正确的是①。
1A.线性表的链表存储结构优于顺序存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方法是先进先出
D.队列的操作方法是先进后出
5、判断一个顺序栈S(最多元素为STACKSIZE)为空的条件是①,为满的条件是②。
A.S.top==0
B.S.base==0
C.S.top==STACKSIZE
D.S.base==STACKSIZE
6、一个队列的入列序列为1,2,3,4,则队列的输出序列是①。
①A.4,3,2,1B.1,2,3,4C.1,4,3,2D.以上三个序列都可以
7、一个一维数组第一个存储单元的地址是100,每个元素的长度是2,则它的第10个元素的地址是①。
①A.120B.119C.118D.110
8、C语言采用行优先方式存放数组元素,数组下标从0开始。
设维数为(5,6,7)的数组A5x6x7的起始存储地址为Loc[0][0][0]=1000,每个数组元素占用4个字节。
则元素A[3][4][5]所在的地址Loc[3][4][5]=①。
①A.1692B.1636C.1436D.1173E.1159F.1109
9、设有三对角矩阵(aij)nxn(1<=i,j<=n),将其三条对角线上的元素逐行地存于数组B[3n-2]中,使得:
B[k]=aij(0<=k<=3n-3)。
请问:
B[11]所对应的元素aij的下标是①,a67所对应的B中的下标是②。
①A.i=4,j=5B.i=5,j=4C.i=5,j=5D.以上三种选择都不对
②A.k=16B.k=17C.k=18D.k=19
10、不带头结点的单链表L为空表的判定条件是①。
①A.L->next==LB.L->next==NULL
C.L!
=NULLD.L==NULL
11、在一个单链表L中,已知p所指结点不是最后结点,若要在p结点之后插入s结点,则执行①。
1A.s->next=p;p->next=s;
B.p->next=s;s->next=p->next;
C.s->next=p->next;p=s;
D.s->next=p->next;p->next=s;
12、假设双向链表结点的类型如下:
typedefstructDlinkNode{
intdata;/*数据域*/
structDlinkNode*prior;/*指向前驱结点的指针域*/
structDlinkNode*next;/*指向后继结点的指针域*/
}bnode;
在一个双向循环链表的p所指结点后插入s结点,则执行①。
①A.p->next=s;s->prior=p;p->next->prior=s;s->next=p->next;
B.p->next=s;p->next->prior=s;s->prior=p;s->next=p->next;
C.s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;
D.s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;
13、串是一种特殊的线性表,其特殊性体现在①。
①A.可以顺序存储B.可以用链表存储
C.数据元素是一个字符D.数据元素可以是多个字符
14、设串s1=“ABCDEFG”,s2=”PQRST”,函数Concat(x,y)返回x和y的连接串,Subs(s,i,j)返回串s的从序号i的字母开始的j个字符组成的子串,Length(s)返回串s的长度,则下面函数Concat(Subs(s1,2,Length(s2)),Subs(s1,Length(s2),2))的结果串是①。
①A.BCDEFB.BCDEFG
C.BCPQRSTD.BCDEFEF
15、二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面,这种说法①。
①A.正确B.不正确
16、在线索化二叉树中,T所指结点没有左子树的充要条件是①。
①A.T->lchild==NULLB.T->ltag==1
C.T->lchild==NULL&&T->ltag==1D.以上都不对
17、如果某二叉树的先序遍历序列是abdgcefh,中序遍历序列是dgbaechf,则其后序遍历序列是①。
①A.bdgcefhaB.dgbecfha
C.bdgaechfD.gdbehfca
18、按照二叉树的定义,具有三个结点的二叉树有①种。
①A.3B.4C.5D.6
19、如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的①。
①A.先序B.中序C.后序D.层序
20、任何一棵二叉树的叶结点在先序、中序和后序遍历的序列中的相对次序①。
①A.不发生变化B.发生变化
C.不能确定D.以上都不对
21、下图所示的二叉树中,①是平衡二叉树。
22、若采用三元组存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点①。
①A.正确B.错误
23、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的①倍。
①A.1/2B.1C.2D.4
24、一个具有n个顶点的无向图最多有①条边。
①A.nB.n(n-1)C.n(n-1)/2D.2n
25、对于一个具有n个顶点的无向图,要连通所有顶点至少需要①条边;若采用邻接矩阵表示,则该矩阵的大小是②。
①A.nB.n+1C.n-1D.n/2
②A.nB.(n-1)2C.n-1D.n2
26、关于图的邻接矩阵,下列结论①是正确的。
1A.有向图的邻接矩阵总是不对称的
B.无向图的邻接矩阵总是不对称的
C.有向图的邻接矩阵可以是对称的,也可以是不对称的
D.无向图的邻接矩阵可以是不对称的,也可以是对称的
27、已知一有向图的邻接表存储结构如下图所示,从顶点v1出发按深度优先搜索法进行遍历,则得到的一种顶点序列为①;按广度优先搜索法进行遍历,则得到的一种顶点序列为②。
①A.v1,v2,v3,v5,v4B.v1,v2,v3,v4,v5
C.v1,v3,v4,v5,v2D.v1,v4,v3,v5,v2
②A.v1,v2,v3,v4,v5B.v1,v3,v2,v4,v5
C.v1,v2,v3,v5,v4D.v1,v4,v3,v5,v2
28、对线性表进行二分查找时,要求线性表必须①。
1A.以顺序方式存储
B.以链表方式存储
C.以链表方式存储,且结点按关键字有序排序
D.以顺序方式存储,且结点按关键字有序排序
29、在下列排序方法中,关键字比较的次数与它的初始排列次序无关的是①。
①A.希尔排序B.冒泡排序C.插入排序D.选择排序
30、排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为①。
①A.希尔排序B.冒泡排序C.插入排序D.选择排序
31、一组记录的关键字为(46,79,56,38,40,84),则利用快速排序的方法,以第一个关键字为枢轴得到的第一次划分结果为①。
1A.38,40,46,56,79,84
B.40,38,46,56,79,84
C.40,38,46,79,56,84
D.40,38,46,84,56,79
32、下列几种排序方法中,要求内存量最大的是①。
①A.归并排序B.快速排序C.插入排序D.选择排序
33、堆栈和队列的共同点是①。
1A.只允许在端点处插入和删除B.都是先进先出C.都是先进后出D.没有共同点
34、二叉树是二叉排序树的充要条件是其任意非叶结点的值均大于其左孩子的值、小于其右孩子的值。
这种说法①。
①A.正确B.错误
二.填空题(将正确的答案填在相应的空位中,每空1-2分,共20分)
1、设n为正整数,下面程序段中前置以记号@的语句的频度是①。
for(i=0;ifor(j=i;j@a[i][j]=0;
}
2、从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动①个元素。
3、键盘缓冲区采用①存储结构比较合适。
4、空串是①,其长度为②。
5、对一个10阶对称矩阵A,采用压缩存储方式(以行序为主序,且A[0][0]的地址为1),则A[8][5]的地址是①。
6、满三叉树的第i层的结点个数为①,深度为h时该树中共有②结点。
7、设一个图G={V,{A}},V={a,b,c,d,e,f},A={,,,,,,}。
那么顶点e的入度是①;出度是②;通过顶点f的简单回路有③条;就连通性而言,该图是④图;它的强连通分量有⑤个;其生成树可能的最大深度是 ⑥ 。
8、排序过程一般需经过两个基本操作,它们是①和②。
三.分析题(每题5分,共20分)
1、将下列二叉链表改为中序线索二叉链表(可以先画出树的形态)。
1234567891011121314
Info
A
B
C
D
E
F
G
H
I
J
K
L
M
N
Ltag
Lchild
2
4
0
7
0
0
0
10
13
0
12
0
0
0
Rtag
Rchild
3
5
6
8
0
9
0
11
14
0
0
0
0
0
2、简述以下两个算法的功能并指出这两个算法在算法思想上的主要区别是什么。
typedefstruct{
ElemType*elem;
intlength;
intlistsize;
}SqList;
(1)StatusDK1(SqList&a,inti,intk)
{intj,count;
if(i<1||k<0||i+k>a.length)returnINFEASIBLE;//参数不合法
else{
for(count=0;countfor(j=i;ja.length--;
}
}
returnOK;
}//DK1
(2)StatusDK2(SqList&a,inti,intk)
{intcount;
if(i<1||k<0||i+k>a.length)returnINFEASIBLE;//参数不合法
else{
for(count=0;counta.elem[i-1+count]=a.elem[i+k-1+count];
}
a.length-=k;
}
returnOK;
}//DK2
3、试利用Dijkstra算法求下图在从顶点A到其它顶点的最短距离,写出计算过程中各步状态。
4、完成以下递归算法,它将二叉树中所有结点的左、右子树相互交换。
typedefstructBiTNode{
chardata;//结点信息是字符
structBiTNode*lchild,*rchild;//左右孩子指针
}*BiTree;
Statusexchangelr(BiTree&T)//算法用函数名exchangelr表示
{BiTreep;//临时工作指针
......//待完成的若干语句;
}