数据结构实验报告(C++) 实验3;图结构实验指导(含源码)

 整理一下之前的作业,说不定会帮上别人

如果其中选做题没有源码或没有运行截图,那是因为作者也未完成,请见谅

题目1.统计有向图各顶点的度
题目2.非递归深度优先遍历
题目3.距离最远的顶点
题目4.判断有向图是否存在回路
题目5.判断两个顶点间是否存在路径
题目6.(选做题)判断两个顶点间是否存在指定长度的简单路径

题目1. 统计有向图各顶点的度

实验要求:

  1. 实现一个模板函数StatDegree统计有向图各顶点的度;
  2. 利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含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. 距离最远的顶点

实验要求:

  1. 实现一个模板函数FathestVex返回距离索引为v的顶点最远的顶点索引;
  2. 利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含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. 判断有向图是否存在回路

实验要求:

  1. 实现一个模板函数HasCycle判断有向图g是否存在回路
  2. 利用编程模板中提供的主函数中测试算法正确性。

实现提示:

本题提供的编程模板包含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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值