标签:链式 src img 最短路径 链式存储结构 迭代器 访问 解决 ram
用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
给出伪代码,产品代码,测试代码(不少于5条测试)
其中值得注意的是对角线上的应该是0,因为自己和自己是没有路径的。
设立一个访问标志数组visited[N],初值为0,某顶点被访问后,则相应下标元素置1。
(1)初始化队列Q;visited[N]=0;
(2)访问顶点v;visited[v]=1;顶点v入队列Q;
(3) while(队列Q非空)
v = 队列Q的队头元素出队;
w = 顶点v的第一个邻接点;
while ( w存在 )
如果w未访问,则访问顶点w;
visited[w]=1;
顶点w入队列Q;
w=顶点v的下一个邻接点
设立一个访问标志数组visited[N],初值为0,某点被访问,则相应下标变量置1。
输入要访问的结点V1;
访问结点V1,visited[vi]=1;
在邻接矩阵第i行中进行查找,若vi有邻接点vj没有被访问,则设置vi=vj;
重复前几步直到所有结点均被访问;
用十字链表实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
给出伪代码,产品代码,测试代码(不少于5条测试)
1.add()
这个方法的话,我直接让数组的下一个位置等于我们输入的那个元素;
2.isEmpty()
在这里只需要判断我们用于储存结点的数组是否为空即可。
3.size()
返回用于计数的 anInt;
4.remove()
这个方法在十字链表这块儿我到目前为止还没能实现,希望可以通过继续的学习实现。
实现PP19.9
给出伪代码,产品代码,测试代码(不少于5条测试)
PP19.9,只需要调用前面我们实现的树的遍历,然后在其中加入判断如何判别最短路径的方法即可,
判断最短路径的方法:
开始假定直达路径即为我们需要的最短路径
初始时v0属于visited,即已经找到v0 到v的最短路径
来假设经由一个点中转到达其余各点,会近些并验证
直到我们穷举完
挑一个距离最近经由点,下标装入 v
经由顶点j中转则距离更短
顶点v并入S,由v0到达v顶点的最短路径为min.
假定由v0到v,再由v直达其余各点,更新当前最后一个经由点及距离
如果多经由一个v点到达j点的 最短路径反而要短,就更新
1.实验中遇到的一个比较突出的问题就是,在我写实验1测试类的时候遇到了死循环
解决过程:经过反复尝试我发现是在添加数据进去的时候没有正确的改变数组的大小从而导致死循环
2.实验3实现的过程中出现了空指针的问题
这个问题,在求助杨京典同学后,我们发现,我是没有先将点加到数组中,就先开始在两点之间建立连线了,将顺序换一下,就改好啦
这次实验给我的收获比较大,遇到了一些以前没有主要到的问题,老师也及时为我指出了我的不足,我会在以后注意这些问题的。
20162304 2017-2018-1 实验四-图的实现与应用
标签:链式 src img 最短路径 链式存储结构 迭代器 访问 解决 ram
原文地址:http://www.cnblogs.com/zhanghaolin/p/7895778.html