整理一下之前的作业,说不定会帮上别人
如果其中选做题没有源码或没有运行截图,那是因为作者也未完成,请见谅
题目1.统计有向图各顶点的度
题目2.非递归深度优先遍历
题目3.距离最远的顶点
题目4.判断有向图是否存在回路
题目5.判断两个顶点间是否存在路径
题目6.(选做题)判断两个顶点间是否存在指定长度的简单路径
题目1. 统计有向图各顶点的度
实验要求:
- 实现一个模板函数StatDegree统计有向图各顶点的度;
- 利用编程模板中提供的主函数,测试算法正确性。
实现提示:
本题提供的编程模板包含node.h、lk_list.h、adj_list_graph_vex_node.h、adj_list_dir_graph.h、 lk_queue.h、main.cpp、alg1.h共7个文件,其中node.h包含了单链表结点类模板,lk_list.h包含单链表类模板,adj_list_graph_vex_node.h包含邻接表图顶点结点类模板,adj_list_dir_graph.h 包含有向图的邻接表类模板,lk_queue.h包含链队列模板, main.cpp为测试所使用的主函数。算法实现代码应填写在alg1.h的StatDegree函数中,不可以在其它任何位置添加、删除或更改代码。
算法测试时,第一行输入图顶点个数,第二行输入各顶点的数据元素,接下来输入邻接矩阵,构造出得有向图作为参数传给StatDegree。
输入样例:
4
a b c d
0 1 0 1
0 0 1 0
0 0 0 1
0 0 0 0
输出样例:
各顶点的度为:
a:2
b:2
c:2
d:2
题目2. 非递归深度优先遍历
实验要求:
(1)给无向图的邻接表类模板AdjListUndirGraph添加实现一个模板函数NonRecurDFS实现从一个顶点开始对无向图进行深度优先遍历,不使用递归。
(2)利用编程模板中提供的主函数,测试算法正确性。
实现提示:
本题提供的编程模板包含node.h、lk_list.h、adj_list_graph_vex_node.h、adj_list_undir_graph.h、 lk_queue.h、lk_stack.h、main.cpp、alg2.h共8个文件,其中node.h包含了单链表结点类模板,lk_list.h包含单链表类模板,adj_list_graph_vex_node.h包含邻接表图顶点结点类模板,adj_list_undir_graph.h包含无向图的邻接表类模板,lk_queue.h包含链队列模板,lk_stack.h包含链栈类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg2.h的NonRecurDFS函数中,不可以在其它任何位置添加、删除或更改代码。
算法测试时,第一行输入图顶点个数,第二行输入各顶点的数据元素,接下来输入邻接矩阵,构造出得有向图调用alg2.h中的NonRecurDFSTraverse函数,NonRecurDFSTraverse调用NonRecurDFS实现无向图的非递归深度优先遍历。注意遍历时,如果一个顶点有多个未被访问过的邻接点,要求先访问索引较小的顶点。
输入样例:
4
a b c d
0 0 0 1
0 0 1 1
0 1 0 1
1 1 1 0
输出样例:
a d b c
题目3. 距离最远的顶点
实验要求:
- 实现一个模板函数FathestVex返回距离索引为v的顶点最远的顶点索引;
- 利用编程模板中提供的主函数,测试算法正确性。
实现提示:
本题提供的编程模板包含node.h、lk_list.h、adj_list_graph_vex_node.h、adj_list_undir_graph.h、 lk_queue.h、main.cpp、alg3.h共7个文件,其中node.h包含了单链表结点类模板,lk_list.h包含单链表类模板,adj_list_graph_vex_node.h包含邻接表图顶点结点类模板,adj_list_undir_graph.h包含无向图的邻接表类模板,lk_queue.h包含链队列模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg3.h的NonRecurDFS函数中,不可以在其它任何位置添加、删除或更改代码。
算法测试时,第一行输入图顶点个数,第二行输入各顶点的数据元素,接下来输入邻接矩阵,最后一行输入起始顶点的编号,将构造出的无向图以及起始顶点编号作为参数传给FarthestVex。
输入样例:
4
a b c d
0 0 0 1
0 0 1 1
0 1 0 1
1 1 1 0
1
输出样例:
距离b最远的是a
题目4. 判断有向图是否存在回路
实验要求:
- 实现一个模板函数HasCycle判断有向图g是否存在回路
- 利用编程模板中提供的主函数中测试算法正确性。
实现提示:
本题提供的编程模板包含node.h、lk_list.h、adj_list_graph_vex_node.h、adj_list_dir_graph.h、 lk_queue.h、main.cpp、alg4.h共7个文件,其中node.h包含了单链表结点类模板,lk_list.h包含单链表类模板,adj_list_graph_vex_node.h包含邻接表图顶点结点类模板,adj_list_dir_graph.h 包含有向图的邻接表类模板,lk_queue.h包含链队列模板, main.cpp为测试所使用的主函数。算法实现代码应填写在alg4.h的HasCycle函数中,不可以在其它任何位置添加、删除或更改代码。
算法测试时,第一行输入图顶点个数,第二行输入各顶点的数据元素,接下来输入邻接矩阵,构造出得有向图作为参数传给HasCycle。
输入样例1:
4
a b c d
0 1 0 1
0 0 1 0
0 0 0 1
0 0 0 0
输出样例1:
图g【不存在】回路
输入样例2:
4
a b c d
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
输出样例1:
图g【存在】回路
题目5. 判断两个顶点间是否存在路径
实验要求:
(1)实现一个模板函数ExistPath判断有向图g中两个顶点i和j之间是否存在路径。
(2)利用编程模板中提供的主函数,测试算法正确性。
实现提示:
本题提供的编程模板包含node.h、lk_list.h、adj_list_graph_vex_node.h、adj_list_dir_graph.h、 lk_queue.h、main.cpp、alg5.h共7个文件,其中node.h包含了单链表结点类模板,lk_list.h包含单链表类模板,adj_list_graph_vex_node.h包含邻接表图顶点结点类模板,adj_list_dir_graph.h 包含有向图的邻接表类模板,lk_queue.h包含链队列模板, main.cpp为测试所使用的主函数。算法实现代码应填写在alg5.h的ExistPath函数中,不可以在其它任何位置添加、删除或更改代码。
算法测试时,第一行输入图顶点个数,第二行输入各顶点的数据元素,接下来输入邻接矩阵,最后一行输入待判断的两个顶点索引。将构造出的有向图以及两个顶点编号作为参数传给ExistPath。
输入样例1:
4
a b c d
0 1 0 1
0 0 1 0
0 0 0 1
0 0 0 0
0 1
输出样例1:
a到b【存在】路径
输入样例2:
4
a b c d
0 1 0 1
0 0 1 0
0 0 0 1
0 0 0 0
1 0
输出样例2:
b到a【不存在】路径
题目6. (选做题)判断两个顶点间是否存在指定长度的简单路径
实验要求:
(1)实现一个模板函数ExistPathLen判断有向网net中两个顶点i和j之间是否存在长度为k的简单路径。
(2)利用编程模板中提供的主函数,测试算法正确性。
实现提示:
本题提供的编程模板包含node.h、lk_list.h、adj_list_network_vex_node.h、adj_list_network_edge.h、adj_list_dir_network.h、 lk_queue.h、main.cpp、alg6.h共8个文件,其中node.h包含了单链表结点类模板,lk_list.h包含单链表类模板,adj_list_network_vex_node.h包含邻接表网顶点结点类模板,adj_list_network_edge.h 包含邻接表网边数据类模板,adj_list_dir_network.包含有向网的邻接表类模板,lk_queue.h包含链队列模板, main.cpp为测试所使用的主函数。算法实现代码应填写在alg6.h的ExistPathLen函数中,不可以在其它任何位置添加、删除或更改代码。
算法测试时,第一行输入有向网顶点个数,第二行输入各顶点的数据元素,接下来输入邻接矩阵,最后一行输入待判断的两个顶点索引i和j以及指定的路径长度k。将构造出的有向网以及i,j,k作为参数传给ExistPathLen。
输入样例1:
5
a b c d e
0 0 6 0 0
0 0 0 0 3
0 1 0 0 0
5 0 0 0 0
0 0 9 8 0
0 1 7
输出样例1:
a到b【存在】长度为7路径
输入样例2:
5
a b c d e
0 0 6 0 0
0 0 0 0 3
0 1 0 0 0
5 0 0 0 0
0 0 9 8 0
0 1 8
输出样例2:
a到b【不存在】长度为8路径
完成后的源码:
:数据结构实验报告(C++)实验3;图结构实验指导程序源码-C++文档类资源-CSDN文库
或
链接:https://pan.baidu.com/s/1VLDRcuGkj_WWMZTsxeE3QA?pwd=gj3s 提取码:gj3s