计算机科学与技术系
《数据结构课程设计》评分表
设计题目 | 39. 如下图所示,编写可视化算法将从顶点v能到达的最短路径长度为k的所有顶 点标记为红色(最短路径以路径上的边数计算)。 | 成绩 |
| |||
课 程 设 计 主 要 内 容 |
编写可视化算法将从顶点v能到达的最短路径长度为k的所有顶 点标记为红色(最短路径以路径上的边数计算)。 二、任务和要求 要求: 点标记为红色(最短路径以路径上的边数计算)。 在vs2017和Qt配置好的环境下创建一个Qt应用程序,并引入相关的Qt库。定义图的节点结构,包含值和左右子节点指针。实现一个函数,根据给定顶点和最短路径长度得到可以得到的顶点。在Qt的图形场景中,使用图形项和图形线条来表示。在界面中展示图的可视化效果。 | |||||
序号 | 评 价 项 目 | 评 分 | ||||
满分 | 得分 | |||||
1 | 实验报告内容充实,调理清晰,算法设计阐述的清楚。 | 20 | ||||
2 | 实验报告图表齐全、格式规范,质量高。 | 20 | ||||
3 | 算法设计与算法应用能力。 | 20 | ||||
4 | 程序测试用例设计全面,对算法的各种不同情况进行测试。 | 20 | ||||
5 | 程序代码质量高,代码可读性好。 | 20 | ||||
累计得分 |
注:(1)成绩评定 采用百分制。
- 问题描述与分析
问题描述:编写可视化算法将从顶点v能到达的最短路径长度为k的所有顶
点标记为红色(最短路径以路径上的边数计算)
分析:该题目具有不确定的起始顶点v和最短路径长度k,需要先通过代码实现该图,然后输入顶点和最短路径长度,通过dijkstra算法求最短路径长度,最后将所得到的结果顶点标红。
2.具体设计过程
2.1设计思路
从输入的顶点开始进行最短路径计算,根据输入的最短路径长度k得到结果顶点,将结果通过qt展示并将所得顶点进行标红处理
2.2 程序设计流程图
(流程图 + 说明)
选择k的值(1到7之间)→输入顶点→依次寻找相邻的节点(不重复)→将所得到的节点标红。
2.3 函数实现说明
此处对程序中的一些关键函数进行说明,指明函数的功能、函数的参数、输入数据的格式以及要求、输出等做详细说明。
class point节点对象
paintf::inter_nun()获取k的值
paintf::inter_point()获取顶点的值(使用lineEdit->text()获取QString类型的输入节点,之后使用其成员函数转为char格式)(用char类型存储)
auto init[this](){} lambda表达式,输入整个图的各节点连接关系。
calculate()使用dijkstra算法根据输入节点与步数计算出所有结果
paint::draw()根据函数calculuate()的结果改变各节点的颜色
3. 程序运行说明
输入格式
输入顶点:字母(小写)格式。(使用正则表达式筛选)
选择k的值:选择(使用skinBox)
输出:
将结果节点变红。
5.结论和心得
这次的作业我探索了很多,请教和学习了很多。就本题而言我们通过编写可视化算法将从顶点v能到达的最短路径长度为k的所有顶点标记为红色(最短路径以路径上的边数计算)。并将其可视化展示出来。在这个过程中,我们使用了class point节点对象paintf::inter_nun()获取k的值paintf::inter_point()获取顶点的值(使用lineEdit->text()获取QString类型的输入节点,之后使用其成员函数转为char格式)(用char类型存储)auto init[this](){} lambda表达式,输入整个图的各节点连接关系。calculate()使用dijkstra算法根据输入节点与步数计算出所有结果paint::draw()根据函数calculuate()的结果改变各节点的颜色,。最后通过图形化框架展示了图的标红顶点。通过解决这个问题,我对图的构建和可视化有了更深入的理解。