当前位置:文档之家› 青岛理工大学算法与数据结构期末试题

青岛理工大学算法与数据结构期末试题

1.数据的最小单位是()。

A.数据项 B.数据类型 C.数据元素 D.数据变量
2.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。

编号为49的结点X的双亲编号为( )
A.24
B.25
C.23
D.无法确定
3.一个具有n个顶点的无向完全图的边数为( )
A.n(n+1)/2
B.n(n-1)/2
C.n(n-1)
D.n(n+1)
4. 设二维数组A[6][10],每个数组元素占用4个存储单元,若按行优先顺序存放的数组元素,a[0][0]的存储地址为860,则a[3][5]的存储地址是( )
A. 1000
B. 860
C. 1140
D.1200
5.关键路径是事件结点网络中( )
A.最短的回路
B.最长的回路
C.从开始结点到完成结点的最短路径
D.从开始结点到完成结点的最长路径
6.判断一个循环队列Q(最多元素为m)为满队列的条件是( )
A.Q->front==Q->rear
B. Q->front!=Q->rear
C. Q->front== (Q->rear+1)%m
D. Q->front!=(Q->rear+1)%m
7. 栈和队列的共同特点是( )。

A.只允许在端点处插入和删除元素
B.都是先进后出
C.都是先进先出
D.没有共同点
8. 广义表((a),a)的表尾是( )。

A.a
B.((a),a)
C.(a)
D.((a))
9.下面程序段的时间复杂度为( )
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
a[i][j]=i*j;
A. O(m2)
B. O(n2)
C. O(m*n)
D. O(m+n)
10.设单循环链表中结点的结构为(data,link),且rear是指向非空的带表头结点的单循环链表的尾结点的指针。

若想删除链表第一个结点(首元结点),则应执行下列哪一个操作( )
A.s=rear; rear=rear->link; delete s;
B.rear=rear-
>link; delete rear;
C.rear=rear->link->link; delete rear; D s=rear->link-
>link; rear->link->link=s->link; delete s;
11.输入序列为ABC,可以变为CBA时,经过的栈操作为( )
A. push,pop,push,pop,push,pop
B.
push,push,push,pop,pop,pop
C. push,push,pop,pop,push,pop
D.
push,pop,push,push,pop,pop
12.已知一个图,若从顶点a 出发按深度优先进行遍历,则可能得到的
一种顶点序列为( );按广度优先搜索法进行遍历,则可能得到得
一种叙列为( )。

b
a
e
c
d
f
(1) A.abecdf B.acfebd C.aebcfd D.aedfcb
(2) A.abcedf B.abcefd C.aebcfd D.acfdeb
二、填空题(每空2 分,共16分)
1.数据的逻辑结构被分为 两大类。

2.数据的存储结构被分为 四种。

3. 设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,
<4,3>},则该图的一种拓扑序列为____________________。

4. 设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点
B,指针s指向被插入的结点X,则在结点A和结点B之间插入结点X的操作
序列为 ; s->next=p;。

5.设某棵二叉树中只有度数为0和度数为2的结点且度数为0的结点数为
n,则这棵二叉中共有 个结点。

6.已知一个序列为(80,70,33,65,24,56,48),则利用堆排序的方法
建立的初始小根堆为 。

7.表达式a*(b+c)-d的后缀表达式是 。

8. 已知一个连通图的边集为{(1,2)3,(1,3)6,(1,4)8,(2,3)4,(2,5)10,
(3,5)12,(4,5)2},若从顶点1出发,按照普里姆算法生成的最小生成树
的过程中依次得到的各条边为 。

三、判断题(每题1分,共6分)
1.连通分量是无向图中的极小连通子图。

( )
2.任何一个关键活动提前完成,那么整个工程将会提前完成。

( )
3.线性表的顺序存储结构比链式存储结构更好。

( )
4.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。



5.中序遍历二叉排序树可以得到一个有序的序列。

( )
6.用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的
存储空间大小只与图中顶点个数有关,而与图的边数无关( )。

四、应用题(每题8分,共40分)
1.已知一棵二叉树的后序遍历的结果是ABFHGEDC,中序遍历的结果是ABCEFGHD,(1)试画出这棵二叉树。

(2)将此二叉树转换成树或森
林。

(8分)
2. 某子系统在通信联络中只可能出现8种字符,其出现的概率分别为
0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11试设计赫夫曼编
码。

(8分)
3.已知一组记录的排序码为(46,79,56,38,40,80, 95,24),写
出对其进行快速排序的每一次划分结果。

(8分)
4. 设一组初始记录关键字集合为(25,10,8,27,32,68),散列表的
长度为8,散列函数H(k)=k mod 7,要求分别用线性探测和拉链法
(链地址法)作为解决冲突的方法设计哈希表。

(8分)
5.已知图的存储的邻接矩阵如下,画出相应的图形并利用Dijkstra算法
V1V2V3V4V5V6V101113∞∞∞V2∞0∞1625∞V343014∞8V4∞16∞07∞V5∞∞∞∞∞∞V6
∞∞∞211∞
求出从源点v1到其余各顶点的最短路径及长度,写出执行过程。

(8分)
五.阅读与程序设计题(12分)
1.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。

(4分)
struct record{int key; int others;};int bisearch(struct record r[ ], int k){
int low=0,mid,high=n-1; while(low<=high){
________________________________;
if(r[mid].key==k) return(mid+1); else if(____________) high=mid-1;else low=mid+1; }
return(0);}
2.写出下面程序的功能: (3分)Int leafnum=0;
Void countleaf(bintree t) //t为一棵二叉树{if(t==null)return 0;
If(t->lchild==null &&t->rchild==null){leafnum++;}Else
{countleaf(t->lchild); countleaf(t->rchild);}}
3. 设有一单链表L,结点结构为data|next,结点个数至少3个,试画出
链表L的结构图,并编写算法判断该单链表L中的元素是否成等差关系,即:设各元素值次为a1,a2,a3,…,an,判断ai+1-ai=ai-ai-1是否成立,其中i满足2<=i<=n-1.(5分)。

相关主题