1 问题分析和任务定义
1.1 问题描述
很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示在连通的无向图上访问全部结点的操作。
1.2 基本要求
以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。
1.3 测试数据
任选国内城市,起点为合肥,暂时忽略里程。
1.4 问题分析及任务定义
此程序需要完成以下操作:使用文件读取数据,以邻接多重表为存储结构,构成一个连通的图。用户输入一个起始点,从起始点开始对图分别进行深度优先和广度优先遍历。分别输出每种遍历下的结点访问序列和相应的生产树的边集。
程序的执行流程如下图所示。
1.5 实现本程序需要解决的问题
如何利用从文件读取的数据构成无向图
如何实现从用户指定的点开始遍历
遍历完后如何输出遍历过得点的序列和边集
如何利用图形化动态的演示遍历过程
如何提高用户体验
本程序的难点在于如何创建邻接多重表,和如何遍历所有城市。
设图的结点20-30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。通过输入图的全部边(存于数据文件中,从文件读写)输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。注意,生成树的边是有向边,端点顺序不能颠倒。
参考文档和完整的文档和源码下载地址: