实验四 图的实现与应用
图的实现与应用 - 1
题目要求:
用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
给出伪代码,产品代码,测试代码(不少于5条测试)
上方提交代码链接
附件提交测试截图
实验内容:
-
邻接矩阵:假设图G=(V,E)有n个结点,即V={v0,v1,…,vn-1},E可用如下形式的矩阵A描述,对于A中的每一个元素aij,满足:aij=1表示i和j节点有边相连,aij=0表示i和j没有边相连。
由于矩阵A中的元素aij表示了结点vi和结点vj之间边的关系,或者说,A中的元素aij表示了结点vi和结点vj(0≤j≤n-1)的邻接关系,所以矩阵A称作邻接矩阵。 aij=多少的数表示i和j的路径权值。 -
思路:总的来说,用ArrayList来存储顶点,用数组来存储边;如果边存在就将相应的位置的数字改为1,不是则还是null。深度广度迭代器课本上就有现成的代码。
实验截图:
图的实现与应用 - 2
题目要求:
用十字链表实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
给出伪代码,产品代码,测试代码(不少于5条测试)
上方提交代码链接
附件提交测试截图
实验内容:
-
十字链表::是有向图的一种存储方法,它实际上是邻接表与逆邻接表的结合,即把每一条边的边结点分别组织到以弧尾顶点为头结点的链表和以弧头顶点为头顶点的链表中。
-
有许多代码都可以参考第一个实验,只是在表示边的时候要将二维数组实现的改为用列表表示。
实验截图:
图的实现与应用 - 3
实验内容:
实现PP19.9
给出伪代码,产品代码,测试代码(不少于5条测试)
上方提交代码链接
附件提交测试截图
实验内容:
-
pp19.9的要求其实就是构造一个带权值边的图并求最短路径,所以要有一个单独类构造一个有权图。
-
第二就是求最便宜路径(最短路径),构建一个球最短路径的方法
-
最后就是自己构建一个图进行测试。