大话数据结构 -07-1 图的定义、抽象数据类型与存储结构

1. 定义

在图结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。

2. 与线性表、树结构的区别

3. 相关定义

(1)无向、有向

与图边或者弧相关的数字叫做权(Weight),带权的图通常称为网(Network)

 

(2) 图的顶点与边间的关系

无向图:

边数等于各顶点度数和的一半(因为重复两次计数)

 有向图:

 

注意:

【1】图中顶点与顶点之间的路径并不是唯一的

【2】

【3】

(3)连通图相关术语

1无向连通图

【2】连通分量

注意这里极大的含义,是指能连通的最大结点。非连通图也可能含有连通分量!!

 

此:图1有两个连通分量(图2与图3),图3满足极大顶点数(没有顶点能再与其连接),图4不满足极大定点数(还有D能与其相连)

 【3】有向图(每一对顶点)

怎么理解??

【4】连通图的生成树

但是n-1条边并不一定是生成树

4. 图的抽象数据类型

5. 图的存储结构(共有五种不同的存储结构)

(1)邻接矩阵

 

【1】无向图

注意:矩阵主对角线的值全为0,因为不存在顶点到自身的 边

          无向图的边数组是一个对称矩阵(以从左上角到右下角的主对角线为轴)

规律:

【2】有向图

 

【3】网

代码实现

 

创建网

缺点:对于边数相对于顶点较少的图,该结构存在对存储空间的极大浪费

(2)邻接表

 

【1】无向图

【2】有向图

容易得到每个顶点的出度。

有时为了确定顶点的入度或以顶点为弧头的弧,可以建立一个有向图的逆邻接表。

【3】带权重的网图

【4】实现代码:

结点定义代码

 

无向图邻接表创建

代码中使用了头插法

对于无向图:

缺点:

(3)十字链表(适用于有向图)

 

(4)邻接多重表(无向图)

 

具体实现:

邻接多重表与邻接表的差别,仅仅是在于同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点。

(5)边集数组

 

转载于:https://www.cnblogs.com/GuoXinxin/p/10153049.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 题目:抽象数据类型实现 利用VC++的工作环境实现教材里的基本抽象数据类型。按照课本的要求运用c语言以及数据结构课程所学的知识,设计合理的数据存储结果,实现的基本操作。 二、 抽象数据类型定义以及各基本操作的简要描述 ADT MGraph{ 数据对象:n=n是具有相同特征的数据元素集合,称为顶点集。 数据关系:DR={<v,w>|v,w∈n且<v,w>表示从v指向w的弧} 基本操作: CreateMGraph 初始条件:n是的顶点集,e是的边集 操作结果:按和n的e定义构造G DestroyGraph 初始条件: G存在 操作结果: 销毁G GetVex 初始条件: G存在,v是G中某个顶点 操作结果: 返回v的值 LocateVex 初始条件:G存在,v和G中顶点有相同特征 操作结果:若G中存在顶点v,则返回该顶点再中的位置;否则返回空 PutVex 初始条件: G存在,v是G中某个顶点 操作结果: 对v赋值u FirstAdjVex 初始条件: G存在,v是G中某个顶点 */ 操作结果: 返回的第一个邻接顶点。若顶点在G中没有邻接顶点,则返回空 NextAdjVex 初始条件: G存在,v是G中某个顶点,w是v的邻接顶点 操作结果: 返回v(相对w)的下一个邻接顶点。若w是v的最后一个邻接点,则返回空 InsertVex 初始条件: G存在,v和G中顶点有相同特征 操作结果: 在G中增添新顶点v(不增添与顶点相关的边,留待InsertArc()去做) DeleteVex 初始条件: G存在,v是G中某个顶点 操作结果: 删除G中顶点v及其相关的弧 InsertArc 初始条件: G存在,v和W是G中两个顶点 操作结果: 在G中增添弧<v,w> DeleteArc 初始条件: G存在,v和w是G中两个顶点 操作结果: 在G中删除弧<v,w> DFSTraverseM 初始条件:G存在 操作结果:对进行深度优先遍历 BFSTraverseM 初始条件:G存在 操作结果:对进行广度优先遍历 }ADT MGraph

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值