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

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

实验1

要求

用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
给出伪代码,产品代码,测试代码(不少于5条测试)

内容

邻接矩阵(Adjacency Matrix):是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn}。
对无向图而言,邻接矩阵一定是对称的,而且主对角线一定为零,副对角线不一定为0。
总的来说,这次的代码首先定义一下顶点和边,
然后在此基础上,编写添加删除操作以及size 、isempty方法
如图在size方法直接返回前文中定义的size值即可
而isempty方法我认为返回size值为0时就可以了。
深度广度迭代器课本上就有现成的代码。
并且该试验中的大部分代码都可以在老师给的PPT上找到,包括伪代码等等。
1063761-20171125224357171-1681323070.jpg
1063761-20171125224553656-1296978075.jpg
1063761-20171125225001296-1309394067.png

实验2

要求

用十字链表实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
给出伪代码,产品代码,测试代码(不少于5条测试)

内容

十字链表(Orthogonal List)是有向图的一种存储方法,它实际上是邻接表与逆邻接表的结合,即把每一条边的边结点分别组织到以弧尾顶点为头结点的链表和以弧头顶点为头顶点的链表中。
可以理解为 将行的单链表和列的单链表结合起来存储稀疏矩阵称为十字链表, 每个节点表示一个非零元素。
主要用于解决当矩阵的非零元个数和位置在操作过程中变化较大时,不宜采用顺序存储结构来表示三元组的线性表的问题。
如图:
1063761-20171125230009718-1400073139.jpg
该实验的主要难题我认为在于指向问题,为了完成指向操作,对于十字链表清醒的认识是最重要的。
对于代码而言,与实验一大同小异,参考实验一的部分。
定义顶点与边,再参考网上的代码实现其它实验要求。
1063761-20171125230821890-1066030100.png

实验3

要求

实现PP19.9
给出伪代码,产品代码,测试代码(不少于5条测试)

内容

对于PP19.9 要求很奇特,实际根据我自己的理解,翻译一下就是
构建一个图要求有带权值的边并且求最短路径。
当翻译成这样简单明了的要求后,
我的办法是参考网上的代码,并且根据老师给的PPT内容,了解一下相关操作,由此进行要求实现。
1063761-20171125231222953-2049273426.png

转载于:https://www.cnblogs.com/yuanhongming/p/7897051.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值