数据结构实验指导书(1) 联系客服

发布时间 : 星期三 文章数据结构实验指导书(1)更新完毕开始阅读

数据结构试验指导书

由于深度优先遍历的节点序列是不唯一的,为了使得输出具有唯一的结果,我们约定以节点小编号优先的次序访问(点灯)。在点亮所有可以点亮的灯后,以原路返回的方式回到起点。 输入样例:

6 8 1 1 2 2 3 3 4 4 5 5 6 6 4 3 6 1 5 输出样例:

1 2 3 4 5 6 5 4 3 2 1 实验说明:

1.类型定义(邻接表存储)

#define MAX_VERTEX_NUM 20 //顶点最大个数 typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;

int weight; //边的权值 }ArcNode; //表结点

#define VertexType int //顶点元素类型 typedef struct VNode{ VertexType data; ArcNode *firstarc;

}VNode, AdjList[MAX_VERTEX_NUM]; // typedef struct{

AdjList vertices;

int vexnum, arcnum; //顶点的实际数,边的实际数 int kind; }ALGraph;

2.上述类型定义可以根据实际情况适当调整。 3.算法4、5分别利用栈、队列实现非递归算法。

注意问题:

1.注意理解各算法实现时所采用的存储结构。

27

数据结构试验指导书

2.注意区别正、逆邻接。

28

数据结构试验指导书

实验08 最小生成树、拓扑排序和最短路径

实验学时:2学时 实验类型:上机

背景知识:图的存储、遍历及其应用。

目的要求:

掌握图的常见应用算法的思想及其程序实现。

实验内容:

(1)键盘输入数据,分别建立一个有向图的邻接表和一个无向图的邻接矩阵。 (2)输出该邻接表和邻接矩阵。

(3)以有向图的邻接表为基础输出它的拓扑排序序列。 (4)以无向图的邻接矩阵为基础实现最小生成树的PRIM算法。

(5)以有向图的邻接矩阵为基础实现Dijkstra算法输出单源点到其它顶点的最短路径。 (6)在主函数中设计一个简单的菜单,分别调试上述算法。 (7)*综合训练:校园导航 1)问题描述:

在给出校园各主要建筑的名称信息及有路线连通的建筑之间的距离(或行进时间)的基础上,利用校园导航系统计算出给定的起点到终点之间距离最近(或行进时间最短)的行进路线。

2)设计要求:文件读入或键盘方式读入校园主要建筑信息及建筑间的距离(或行进时间)信息。创建完地图后,以文件形式保存,以免重复创建。计算出给定的起点到终点之间距离最近(或行进时间最短)的行进路线,并输出该路线(包括经过哪些建筑)及其总距离(或总行进时间)。

实验说明: 1.类型定义

邻接表存储见实验07 邻接矩阵存储示例

#define MAX_VERTEX_NUM 20 //顶点最大个数 typedef enum {DG, DN, UDG, UDN} GraphKind;

typedef struct ArcCell{

VRType adj;

int weight; //边的权值

}ArcCell; AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM];

29

数据结构试验指导书

typedef struct{

VertexType vexs[MAX_VERTEX_NUM]; AdjMatrix arcs;

int vexnum, arcnum; //顶点的实际数,边的实际数 GraphKind kind; }MGraph;

注意问题:

注意理解各算法实现时所采用的存储结构。30