当前位置:文档之家› 数据结构 期末考试复习题及答案

数据结构 期末考试复习题及答案

数据结构 期末考试复习题及答案
数据结构 期末考试复习题及答案

1.什么就是最小生成树?简述最小生成树得Prime算法得思想。

答:最小生成树就就是构造一棵生成树,使得树上各边得代价之与最小。

普里姆算法(Prim)得基本思想:

从连通网络N = { V, E }中得某一顶点u0 出发,选择与它关联得具有最小权值得边(u0, v),将其顶点加入到生成树得顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中得各条边中选择权值最小得边(u, v),把它得顶点加入到集合U中。如此继续下去,直到网络中得所有顶点都加入到生成树顶点集合U中为止。

2.简述AOV网络中为何不能出现回路,如何判断AOV网络就是否有回路?答:在AOV网络中,如果活动vi必须在vj之前进行,则称为存在有向边;在AOV网络中不能出现有向回路,如果出现了,则意味着某项活动应以自己作为先决条件。

如何检查AOV网就是否存在有向环:

检测有向环得一种方法就是对AOV网络构造它得拓扑有序序列。即将各个顶点(代表各个活动)排列成一个线性有序得序列,使得AOV网络中所有应存在得前驱与后继关系都能得到满足。

(1)这种构造AOV网络全部顶点得拓扑有序序列得运算就叫做拓扑排序。

(2)如果通过拓扑排序能将AOV网络得所有顶点都排入一个拓扑有序得序列中,则该AOV网络中必定不会出现有向环;相反,如果得不到满足要求得拓扑有序序列,则说明AOV网络中存在有向环,此AOV网络所代表得工程就是不可行得。

3.为何需要采用循环队列?n个空间得循环队列,最多存储多少个元素?为什

么?

答:循环队列以克服顺序队列得"假上溢"现象,能够使存储队列得向量空间得到充分得利用,所以采用循环队列。

n个空间得循环队列,最多存储n-1个元素,那就是为了区别循环队列得队空与队满得条件。队空得条件就是Q、front==Q、rear,而队满得条件就是(Q、rear+1)%N==Q、front(N就是数组中单元得总数),因此,Q、rear所指向得数组单元处于未用状态。所以说,N个单元得数组所存放得循环队列最大长度就是N-1。

4.简述堆得删除算法,其删除得就是那个值?

答:堆得删除算法:首先,移除根节点得元素(并把根节点作为当前结点)比较当前结点得两个孩子结点得元素大小,把较大得那个元素移给当前结点,接着把被移除元素得孩子结点作为当前结点,并再比较当前结点得孩子得大小,以此循环,直到最后一个叶子结点得值大于或等于当前结点得孩子结点或孩子结点得位置超过了树中元素得个数,则退出循环。最后把最后叶子结点得元素移给当前结点。

在堆得算法里面,删除得值为根值。

5.线索二叉树中,什么就是线索,它就是否唯一?可有根据什么顺序得到?

答:指向直接前驱结点与指向直接后续结点得指针被称为线索(Thread),加了线索得二叉树称为线索二叉树。线索二叉树就是唯一得,因为知道先序遍历后,第一个根就是唯一确定得,然后在中序遍历里这个根将它分为两个部分,第一个根得两棵子树得根也会唯一确定,依次此类推,所有子树得根都唯一确定,二叉树就就是唯一得。

6.链式插入排序对比直接插入排序有何优点与缺点?

答:链式插入排序优点就是速度极快,特别就是在数据量大得时候效果尤为明显;其缺点就是在数据量少得情况下内存相对消耗较多。直接插入排序优点就是排序比较简单,稳定性高;缺点就是在数据量很大得情况下效率很低。

所以链式插入排序适合数据量大得情况,直接插入排序适合数据量少得情况。

7.画出该图得邻接矩阵与邻接表。根据邻接表从A开始求DFS(深度优先搜索)

与BFS(广度优先搜索)序列。

答:

DFS:A->C->F->E->D->B

BFS: A->C->B->F->D->E

已知序列[70,73,69,23,93,18,11,68],请给出直接插入排序作升序排序每一趟得结果与快速排序作为升序排序时一趟得结果。

答:

直接插入排序

70 73 69 23 93 18 11 68

70 73 69 23 93 18 11 68

69 70 73 23 93 18 11 68

23 69 70 73 93 18 11 68

23 69 70 73 93 18 11 68

18 23 69 70 73 93 11 68

11 18 23 69 70 73 93 68

11 18 23 68 69 70 73 93

快速排序

R1 R2 R3 R4 R5 R6 R7 R8 left right

[70 73 69 23 93 18 11 68] 1 10

[68 11 69 23 18] 70 [93 73] 1 5

[18 11 23] 68 [69] 70 [93 73] 1 3

[11] 18 [23] 68 [69] 70 [93 73] 7 8

[11 18 23 68 69 70 [73 93]

9.下图表示一个地区得交通网,顶点表示城市,边表示连结城市间得公路,边上得权表示修建公路花费得代价。怎样选择能够沟通每个城市且总造价最省得n-1条公路,画出所有可能得方案。

答:

1

A

B

C

D

E

F

1

6

2

3

10、

(1)画出这个图。

(2)以v1为出发点,对图进行广度优先搜索与深度优先搜索。给出搜索得结

点序列。

答:

(1)

(2)、

DFS: 0->1->3->4->5->2

BFS: 0->1->2->3->5->4

11、设有一组关键字(70,73,69,23,93,18,11,68),

余数法设计散列函数,取得较恰当除数应为多少。

冲突,请构造其散列表并将所有关键字入表。

答:

因为散列表长度为12,且除数应尽量取基数;所以为11、

经检验:70%11=4;73%11=7;69%11=3;23%11=1; 93%11=3; 18%11=7;

11%11=0; 18%11=2;

采用线性探测得哈希表(12个桶,每个桶一个槽)

12、用最短路径算法Dijkstra计算单源多目标最短路径。图中得“1”

号结点为源结点。按提示图表给出每一步计算时最短路径得变化。

答:

dist[6]存放从顶点v0到其她各顶点得当前最短路径。

Path[6]存放在最短路径上该定点得前一顶点。

template

bool BST::search_and_insert(

Binnode *&sub_root, const Elem &new_data)

{

if (sub_root == NULL) {

sub_root = new Binnode(new_data);

return ture;

}

else if (new_data < sub_root->data)

return search_and_insert(sub_root->lchild, new_data);

else if (new_data > sub_root->data)

return search_and_insert(sub_root->rchild, new_data);

else return false; }

算法:在该函数中引用一个指向Binnode指针sub_root与指向ELEM类型得指针new_data,如果指向Binonode得指针sub_root为空,则该指针指向一个带ELEM类型数据得新结点。如果sub_root所指向得不为空,则比较sub_root->data与new-data 得大小,当new_datadata,则递归调用该函数,并把sub_root->lchild作为引用指针;如果sub_root->data

2.用堆排序方法将下列数据从小到大排序。以树得形式给出前两趟排序结果。

(6分)

[35, 57,,23,78, 6, 11]

答:

A:输入数值B:初始堆

相关主题
文本预览
相关文档 最新文档