20202314 实验九 《数据结构与面向对象程序设计》实验报告

# 20202314 2021-2022-1 《数据结构与面向对象程序设计》实验九报告

课程:《程序设计与数据结构》
班级: 2023
姓名: 王鑫垚
学号:20202314
实验教师:王志强
实验日期:2021年12月16日

必修/选修: 必修

一、实验内容

(1) 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)
(2) 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)
(3) 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)
(4) 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)
(5) 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)

实验源码(写了整整一晚上+一上午):

有向图、无向图、测试类。

https://gitee.com/besti2023javads/wang-xinyao-20202314/blob/master/test9/Graph.java

https://gitee.com/besti2023javads/wang-xinyao-20202314/blob/master/test9/UNGraph.java

https://gitee.com/besti2023javads/wang-xinyao-20202314/blob/master/test9/Graphtest.java

二、实验过程及结果

(1) 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)

这里我比较笨,采用了邻接矩阵的方式来表示一个图

 有向图↑

 无向图↑

(2) 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)

 设计的深度广度遍历的图

 

 结果与预期一致!!呜呜呜

(3) 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)

 预期的拓扑排序情况

 实际情况,与预期一致!泪流满面。

(4) 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)

这里使用了Prim算法

 预期结果!

 实际情况,一致!太感动了。

(5) 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)

 

 写的时候没发现,其实图里有两个路径都是路径合为9,0-1-3-5以及0-2-3-5

 这里迪杰斯特拉要输入的边和权重特别多,所以我把要输入的量直接一股脑放到了一起,测试的时候就不用一个一个输入了(看最上面那一行绿的)

一直要么报错要么结果不对应,来来回回写了得十几次二十几次……好歹是做出来了

三. 实验过程中遇到的问题和解决过程
- 问题:各种类报错或者不能正常运行
- 问题解决方案:

感动,终于是做出来了首先是。 其实我的代码跟网上比较成熟的算法比起来麻烦很多(因为是自己写的),测试的时候,一直结果不对或者报错,我就一个地方一个地方的对着值算,找逻辑上的漏洞,然后就是打补丁,一直加各种各样的附加条件,最后就是if 和 for一直套一直套, 一个程序最后就看起来非常恐怖,其实用的很多都是我自己的笨方法……

## 其他(感悟、思考等)

挺好的,做出来心里舒坦多了,太感动了。

## 参考资料

-  [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)

-  [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html)
-  ...

posted @ 2021-12-20 10:52  20202314王鑫垚  阅读(59)  评论(0编辑  收藏  举报