20162304 2017-2018-1 实验四-图的实现与应用

实验四-图的实现与应用

实验四 图的实现与应用-1

试验内容

用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器

给出伪代码,产品代码,测试代码(不少于5条测试)

实验结果

  1. 要想用邻接矩阵实现图,首先需要使用一个一维数组存放顶点,一个二维数组存放边;
  2. 然后清楚两个顶点之间的关系如何表示,用邻接矩阵表示出来是什么样的;
  • 其中值得注意的是对角线上的应该是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;
重复前几步直到所有结点均被访问;

实验四 图的实现与应用-2

实验内容

用十字链表实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器

给出伪代码,产品代码,测试代码(不少于5条测试)

实验结果

  • 十字链表的概念:十字链表(Orthogonal List)是有向图的另一种链式存储结构。该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的。用十字链表来存储有向图,可以达到高效的存取效果。同时,代码的可读性也会得到提升。

在这个实验中我们说一下具体方法的实现

1.add()

这个方法的话,我直接让数组的下一个位置等于我们输入的那个元素;

2.isEmpty()

在这里只需要判断我们用于储存结点的数组是否为空即可。

3.size()

返回用于计数的 anInt;

4.remove()

这个方法在十字链表这块儿我到目前为止还没能实现,希望可以通过继续的学习实现。

实验四 图的实现与应用-3

实验内容

实现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实现的过程中出现了空指针的问题

这个问题,在求助杨京典同学后,我们发现,我是没有先将点加到数组中,就先开始在两点之间建立连线了,将顺序换一下,就改好啦

实验感悟

这次实验给我的收获比较大,遇到了一些以前没有主要到的问题,老师也及时为我指出了我的不足,我会在以后注意这些问题的。

时间: 2024-10-03 00:52:43

20162304 2017-2018-1 实验四-图的实现与应用的相关文章

2017-2018-1 20162330 实验四 图的实现与应用

课程名称:<程序设计与数据结构> 学生班级:1623班 学生姓名:刘伟康 学生学号:20162330 实验时间:2017年11月20日-2017年11月24日 实验名称:图的实现与应用 指导老师:娄嘉鹏.王志强老师 目录 实验要求 实验步骤及代码实现 代码托管汇总 图的实现与应用-1:用邻接矩阵实现无向图 图的实现与应用-2:用十字链表实现有向图 图的实现与应用-3:实现PP19.9 测试过程及遇到的问题 1. 第一个实验无向图的边输入错误 分析总结及PSP时间统计 参考资料 实验要求: 实验

数据结构实验报告-实验四 图的构造与遍历

实验四   图的构造与遍历   l  实验目的 1.图的的定义和遍历 (1)掌握图的邻接矩阵.邻接表的表示方法. (2)掌握建立图的邻接矩阵的算法. (3)掌握建立图的邻接表的算法. (4)加深对图的理解,逐步培养解决实际问题的能力. l  实验内容 1.图的定义和遍历 (一)基础题 1.编写图基本操作函数: (1)CreateALGraph(ALGraph &G) 建立无向图的邻接表表示: (2)LocateVex(ALGraph &G,char v)图查找信息: (3)DFSTrave

实验四 图的实现和应用 实验报告 20162305

实验四 图的实现和应用 实验报告 20162305 实验一 邻接矩阵实现无向图 实验要求 用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器.给出伪代码,产品代码,测试代码(不少于5条测试) 实验过程 用邻接矩阵表示无向图,首先我们先明确什么是邻接矩阵.邻接矩阵就是用矩阵的方式来表示不同结点之间的关系,对于无向图来说,如果结点(i,j)之间有联系,则在矩阵中(i,j)所对应的的点的值为1,

20162313 苑洪铭 实验四 图的实现与应用

20162313 苑洪铭 实验四 图的实现与应用 实验1 要求 用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器 给出伪代码,产品代码,测试代码(不少于5条测试) 内容 邻接矩阵(Adjacency Matrix):是表示顶点之间相邻关系的矩阵.设G=(V,E)是一个图,其中V={v1,v2,-,vn}. 对无向图而言,邻接矩阵一定是对称的,而且主对角线一定为零,副对角线不一定为0. 总

20162327WJH实验四——图的实现与应用

20162327WJH实验四--图的实现与应用 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 指导教师:娄嘉鹏 王志强 实验日期:11月20日 实验密级: 非密级 预习程度: 已预习 实验时间:15:25-17:15 必修/选修: 必修 实验序号: cs_23 实验内容 实验一 1.实验内容 用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,

20162328蔡文琛 实验四 图的实现与应用

20162328蔡文琛 大二 实验四 任务详情 实验1 用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器 实现类 public class MatrixUDG { private char[] mVexs; // 顶点集合 private int[][] mMatrix; // 邻接矩阵 /* * 创建图(自己输入数据) */ public boolean isEmpty(){ bool

实验四 图的遍历算法设计与实现

一.实验名称:图的遍历算法设计与实现 二.实验目的: 1.掌握图的深度优先遍历的算法. 2.掌握图的广度优先遍历的算法. 3.实验章节:算法设计与分析 第四章 三.实验内容.实验问题和程序运行结果 第一部分 广度优先遍历算法 1. 分析Graph类,画出Graph类初始化以后的Graph对象的数据结构图. 2. 分析BFS函数,画出流程图. 3. 上述程序   int data[7][7]={{ 1,-1,-1,-1,-1,-1,-1}, { 6, 3, 2,-1,-1,-1,-1}, { 0,

20162320刘先润大二 实验四 图及应用

实验涉及代码 AMatrix.AMatrixTest.CrossList.CrossListTest.Road.RoadTest 图的实现与应用-1 实验目的:用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器 实现思路:实现邻接矩阵得确定一个表示方法,对于结点于结点之间的关系得使用二元数组来实现.由于无向图的邻接矩阵是对称矩阵,且其左上角到右下角的对角线上值为零,这是其中应用的一条性质.

实验四 图的实现与应用

图的实现与应用 - 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没有边相连.