数据结构课程设计最短路径.docxVIP

  • 92
  • 0
  • 约1.76万字
  • 约 48页
  • 2020-03-26 发布于江西
  • 举报
数据结构课程设计 题目名称: 最短路径 计算机科学与技术学院 1、需求分析 (1)题目:最短路径 实现图的输入,选择合适的结构表示图,在此基础上实现求解 最短路径的算法,可以从任意一点求最短路径,学生必须准备多组 测试数据,并设计清晰易懂的输入输出界面, 要求:如何用多种数据结构来求解问题。同时要求实现对应数 据结构的所有基本操作。 (2)程序的输入与输出:要求用多种数据结构求解问题,也就是要 用邻接表与邻接矩阵实现最短路径的算法,需要有多组输入输出, (a) 输入的形式和输入值的范围:输入的形式为整型 先输入共需要创建几次图 再分别输入边数和顶点数(范围:1~100) 输入 1 和 2 选择是否为有向图图(1 为有向,2 为无向) 4. 对应每条边输入起点和终点下标,以及对这条边的权值 (最大的权值为 100)。 输入在邻接表的基础上输入深度与广度优先搜索的起点 我们输入求各种最短路径起点和终点 (b) 输出的形式; 输出所建立的邻接表(表结点后面的括号是头结点与表结 点的权值) 输出 DFS 和 BFS 的结果 输出该图不带权值的最短路径与路径 接下来输入起点和终点,求带权值的最短路径也就是 Dijstra 算法,输出长度并给出路径 前面都是用邻接表实现的各种算法,接下来的 Floyd 算法 就用矩阵实现,于是直接邻接表转矩阵输出 用 Floyd 算法求出图的多源最短路径,给出起点终点输出 最短路径长度,接着便到了第二次创建图,直至循环结束。 (3)程序的功能: 求给出带权图的任意两点,输出最短路径长度并给出其最短路径 所经过的顶点。 在实际应用中可以将交通网络化成带权的图,图中顶点表示城市, 边代表城市之间的公路,边上的权值表示公路的长度。这样可以发 现两个地方之间有无公路可连,在几条公路可通的情况下,可以找 到那条路径最短。也就是现在地图 app 中的功能。 (4)测试数据:包括正确的输入及其输出结果和含有错误的输 入及其输出结果。 在有向图中输入错误的数据(顶点与顶点方向相反),会输出逆向信息。 2、概要设计 1.主程序流程 主程序首先多组输入一个 n,在 n 不为 0 的前提下循环执 行 调用 BuildGraph()函数,创建一个图并以邻接表的形式存 储 BuildGraph()函数输入顶点、边数调用 CreateGraph(Nv) 函数,初始化一个有 Nv 个顶点但没有边的图,再根据结构体 Edge 输入每个边的信息,调用 InsertEdge( Graph, E ,c );函数将每条 边插入到仅仅初始化的图中,完成一个图的建立,并返回一个邻接 表类型的结构体 主函数接到返回来的邻接表结构体,调用 outL()函数,输 出这个邻接表 输入起点,调用 DFS(Graph,v1,1);函数进行递归求解深度 优先搜索并直接输出 输入起点,调用 BFS(Graph,v1);函数,求解广度优先搜索 并直接输出 输入起点、终点,调用 Unweighted ( Graph, v1 );函数 求得起点到每个点的最短路径,再用 dist[v2]输出。 如果 dist[v2]大于 0 证明 v1 可以到达 v2,调用 outpath(v2)输出路径 输入起点、终点,调用 Dijkstra(Graph,v1);函数求得起 点到每个点的最短路径,再用 dist[v2]输出。 如果 dist[v2]小于定义的 INF,证明 v1 可以到达 v2,再 次调用 outpath(v2)输出路径 用 MGraph gra;创建一个邻接矩阵之后,调用 transform(Graph);进行邻接表与邻接矩阵的转换 outM(gra);函数,以二维数组的形式输出邻接矩阵 调用 Floyd(gra,D,pa);函数求得多源最短路径,存储在 D 这个二维数组中,给出起点,终点直接输出。 2.所有用到的抽象数据类型 (1)边的定义 表示边的起点和终点 边的权重 (2) 邻接表的表结点的定义 邻接点下标 边权重 指向下一个邻接点的指针 (3)邻接表的顶点表头结点的定义 边表头指针 存顶点的数据 邻接表类型的 AdjList 存储邻接表的头结点 (4) 邻接表对应图结点的定义 顶点数 边数 邻接表 (5)邻接矩阵的定义 顶点数 边数 二维数组形式的邻接矩阵 (6) BFS 存数据的队列 队头 front 标记 队头 rear 标记 存数据的数组 (7)用于输出最短路径的栈 栈顶 top 标记 存数据的数组 3.设计程序的各个模块(即函数)功能及设计思想 (1) CreateGraph( int VertexNum )函数 功能:初始化一个有 VertexNum 个顶点但没有边的图 设计思想:(a)根据邻接表结构体分配一块空间 初始化图的顶点数和边数 初始化邻

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档