第七章 图 知识点2:图的存储结构.

Slides:



Advertisements
Similar presentations
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
Advertisements

第四章 家庭財務報表及預算的編製與分析.
关于市场营销的分析 ——以九阳豆浆机为例 品牌经营——让每一个家庭都拥有一台九阳豆浆机 营销管理——采取文化、概念、网络等营销组合
第七章 图 7.1 图的定义和术语 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 7.5 有向无环图及其应用
复习:树 树的基本概念和术语 二叉树的概念及性质 二叉树的存储结构 遍历二叉树 线索二叉树 树的应用:哈夫曼树 顺序存储 链式存储 递归算法
授课教师简历 刘付才,男,中学高级教师,亳州一中南校体 育教研组长,全国体育优质课一等奖获得者,华佗 五禽戏第五十八代传承人;长期从事五禽戏教学和 研究工作,参与创编了国家级课题“校园五禽戏”; 2014年全国学生运动会展示中获得优秀表演奖; 2015年指导的五禽戏传人进行的五禽戏教学获得全 国一等奖,编著的《华佗五禽戏之简易健身操》即.
洪涝灾害重点传染病的预防 江苏省疾病预防控制中心 汪华.
小 桔 灯 市场赢利能力与战略 主讲:杨贤耀.
数据结构 课程性质:专业基础课 授课时段:2004年下半学期 授课单位:软件学院 任课教师:李青山、徐学洲.
最大团问题 回溯法应用 作者:余新华 时间:
国际贸易法.
践行新时期广东精神 推进广东公路文化繁荣与发展 ——关于广东省公路文化建设与实践的思考
图 2008赛前知识点梳理三.
七 年 级 数 学 第二学期 (苏 科 版) 复习 三角形.
数据结构 第7章 图.
第六章 图(一).
第七章 图 (Graph)
Ch.7 图 图是一种复杂的非线性结构 应用:AI、工程、数学、生物、计算机 结点间的逻辑关系:任两个结点都可能相关
第3章 算法与数据结构_c语言描述 3.1 计算机的问题求解模型 3.2 C语言基础 3.3 算法与数据结构的基本概念 3.4 线性结构
第七章 图 7.1 图的基本概念 7.2 图的存储表示 7.3 图的遍历 7.4 图的生成树 7.5 最短路径 7.6 拓扑排序
图(一).
第七章 图 1、图的基本概念 2、图的存储表示 3、图的遍历与连通性 4、最小代价生成树 5、最短路径问题 6、AOV网络和AOE网络.
图的遍历.
Chapter 6 Graphs.
复习.
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
第七章 图.
7.1 抽象数据类型图的定义 7.2 图的存储表示 7.3 图的遍历 7.4 最小生成树 7.5 重(双)连通图和关节点
第七章 图.
知识点回顾 生成树、生成森林 概念、生成过程 最小生成树 概念、 MST 性质 普里姆算法和克鲁斯卡尔算法.
第 4章 串和数组(二) 本讲主要内容: 数组的定义及其顺序表示和实现。 矩阵的压缩存储。 广义表的定义。
第七章 图 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
第7章 图 本章主题:图的基本概念、图的存储结构和图的常用算法 教学目的: 教学重点:图的各种存储方式及其运算
第6章 图 6.2图的存储结构 6.3图的遍历 6.4图的连通性 6.5 最短路径 6.6 AOV网与拓扑排序 6. 7 AOE网与关键路径
数据结构 复习课 王彦 博士,副教授
第七章 图.
数据结构 Data Structure CSU 主讲人:王国军,郑瑾 中南大学信息院计科系
第6章 图 北京师范大学 教育技术学院 杨开城.
第7章 图 7.1 图的定义和术语 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 7.5 有向无环图的应用
第七章 图.
使用矩阵表示 最小生成树算法.
第五章 数组 5.1 数组的定义 5.2 数组的表示和实现* 5.3 数组的压缩.
无向树和根树.
第 五 章 图 论 (第二部分) 1. 通路 2. 图的连通性.
数据结构概论 第7章 图 董黎刚 浙江工商大学信电学院 2019年4月8日.
第6章 图 本章中介绍下列主要内容: 图的定义 图的存储结构 图的遍历操作 图的几个典型问题.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Graphs.
8.1 图的基本概念 8.2 图的存储结构 8.3 图的遍历 8.4 生成树 8.5 最短路径 8.6 拓扑排序 8.7 关键路径
复习 图的定义和术语 图(Graph)、有向图、无向图、子图、有向完全图 、完全图、稀疏图、稠密图、权、网、邻接点、相关边、度、路径、路径长度、回路、简单路径、简单回路、连通、连通图、连通分量、强连通图、强连通分量、生成树 图的存储方法 给定一个图,画出邻接矩阵、邻接表 图的邻接矩阵和邻接表的存储算法.
顺序表的删除.
单链表的基本概念.
常宝宝 北京大学计算机科学与技术系 数据结构(六) 常宝宝 北京大学计算机科学与技术系
第 四 讲 线性表(二).
第8章 图 8.1 图的基本概念和基本操作 8.2 图的邻接矩阵存储结构 8.3 图的邻接表存储结构 8.4 图的其他存储结构
图(二).
3.16 枚举算法及其程序实现 ——数组的作用.
树和图 tree and graph 蔡亚星.
第七、八次实验要求.
第六章 图 本章的主要内容是: 图的逻辑结构 图的存储结构及实现 图的连通性 最小生成树 最短路径 AOV网与拓扑排序 AOE网与关键路径.
2.2矩阵的代数运算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
数据结构概论 第5章 数组和广义表 董黎刚 浙江工商大学信电学院.
第七章 图 £7.1 图的定义和术语 £7.2 图的存储结构 £7.3 图的遍历 £7.4 图的连通性问题 £7.5 有向无环图及其应用
4.2 图的存储结构(cont.) v1 v2 v3 v4 v5 vertex= v1 v2 v3 v4 v5 v
第六章 图.
数据结构 第六章 图.
第7章 图.
第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
Presentation transcript:

第七章 图 知识点2:图的存储结构

1、顺序映象:图的结构比较复杂,无法以数据元素在存储区 中的物理位置表示元素之间的关系,即图没有顺序存储 结构,但可以借助数组的数据类型表示元素的关系。 2、链式映象:采用多重链表表示图,用由一个数据域和多个指针域组成的节点表示图中的顶点。 1 2 ^ ^ 4 ^ 3 ^ 例 G1 2 4 1 3 存在问题:节点度数不一致,指针域数目设置困难。因此,实际中也不采用这种建诶构,而是根据具体需要设置结点结构和表结构 ^ 1 2 4 ^ 5 ^ 3 例 1 5 3 2 4 G2

定义:设G=(V,{E})是有n1个顶点的图,G的邻接矩 阵A是具有以下性质的n阶方阵: 一、数组表示法 使用邻接矩阵表示顶点间相联关系。 定义:设G=(V,{E})是有n1个顶点的图,G的邻接矩 阵A是具有以下性质的n阶方阵: A[i][j]= 1 若(vi,vj)或<vi,vj>是E(G)中的边 0 若(vi,vj)或<vi,vj>不是E(G)中的边     例 G1 2 4 1 3      例 1 5 3 2 4 G2

数组表示法是用两个数组分别存储数据元素(顶点的 信息)和数据元素之间的关系(边或弧)的信息。 形式描述如下: #define MAX_VERTEX_NUM 20 //最大顶点数设为20 typedef enum{dg,dn,udg,udn} GraphKind; //图的类型 typedef struct ArcCell{ VRType adj; //vrtype是顶点关系类型 InfoType *info; //弧相关指针信息 }ArcCell,AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM]

typedef struct { VertexType vexs[Max_Vertex_Num] ; //顶点向量 AdjMatrix arcs; //邻接矩阵 int vexnum,arcnum; //顶点数和边数 GraphKind kind; }Mgragh;

特点: 无向图的邻接矩阵对称,可压缩存储;有n个顶 点的无向图需存储空间为n(n+1)/2。 有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n²。 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和。 有向图中, 顶点Vi的出度是A中第i行元素之和。 顶点Vi的入度是A中第i列元素之和。

网络的邻接矩阵可定义为: wij 若(vi,vj)或<vi,vj>是E(G)中的边 A[i][j]= wij 若(vi,vj)或<vi,vj>是E(G)中的边 ∞ 若(vi,vj)或<vi,vj>不是E(G)中的边 ∞ 6 1 8 2 4 7 5 3      G1.arcs= 例 A D E B C 7 5 3 1 8 6 4 2 无向网G1 G1.vexs=[A,B,C,D,E] G1.vexnum=5 G1.arcnum=8 G1.kind=UDN

构造过程: Ⅰ顶点和边的数量 G.vexnum=5 G.arcnum=8 Ⅱ顶点信息(数组存储) Ⅲ边的信息(构造前注意数组的初始化) (1,2,5) (1,5,3) (1,3,7) (2,5,8) (3,5,1) (2,4,4) (4,5,6) (3,4,2) 具体算法见P162

二、邻接表:为图中每个顶点建立一个单链表,第i个单链表 中的结点表示依附于顶点Vi的边(有向图中vi为弧尾) 表结点:typedef struct ArcNode { // int adjvex; //存放与Vi邻接的点在表头数组中的位置 struct ArcNode *nextarc; //链域,指示下一条边或弧 InfoType *info; }ArcNode; 头结点:typedef struct VNode{ VertexType data; //存放顶点信息 ArcNode *firstarc; //指示第一个邻接点 }VNode,AdjList[Max_Vertex_Num]; } AlGraph adjvex next info data firstarc

表: typedef struct { AdjList vertices; int vexnum,arcnum int kind

1 2 3 a c d b data firstarc ^ adjvex next 例 G1 b d a c 1 2 3 a c d b data firstarc ^ adjvex next 4 e 例 a e c b d G2

无向图中顶点Vi的度为第i个单链表中的结点数 有向图中 顶点Vi的出度为第i个单链表中的结点个数 特点 无向图中顶点Vi的度为第i个单链表中的结点数 有向图中 顶点Vi的出度为第i个单链表中的结点个数 顶点Vi的入度为整个单链表中邻接点域值是i的结点个数 逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表。 1 2 3 a c d b data firstarc ^ adjvex next 例 G1 b d a c

弧结点:typedef struct ArcBox{ int tailvex, headvex; //弧尾、弧头在表头数组中位置 三、有向图的十字链表表示法 弧结点:typedef struct ArcBox{ int tailvex, headvex; //弧尾、弧头在表头数组中位置 struct ArcBox *hlink;//指向弧头相同的下一条弧 struct arcbox *tlink; //指向弧尾相同的下一条弧 InfoType *info; }ArcBox; 顶点结点:typedef struct VexNode{ VertexType data; //存与顶点有关信息 ArcBox *firstin; //指向以该顶点为弧头的第一个弧结点 ArcBox *firstout; //指向以该顶点为弧尾的第一个弧结点 }VerNode; tailvex headvex hlink tlink info data firstin firstout

图: #define MAX_VERTEX_NUM 20 typedef struct { VerNode xlist[MAX_VERTEX_NUM];//顶点数组 int vernum,arcnum; }OLGraph;

例 b d a c a b c d 1 2 3 0 2 0 1 2 3 2 0 3 2 3 1 3 0 ^ ^ ^ ^ ^ ^ ^ ^ 边用顶点位置表示 算法 p165

typedef emun {unvisited,visited} VisitIf; typedef struct EBox{ 四、无向图的邻接多重表表示法 边结点: typedef emun {unvisited,visited} VisitIf; typedef struct EBox{ VisitIf mark; //标志域—访问标志 int ivex, jvex; //该边依附的两个顶点在表头数组中位置 struct EBox *ilink, *jlink; //分别指向依附于ivex和jvex的下一条边 InfoType *info; }EBox; mark ivex ilink jvex jlink info

顶点结点: typedef struct VexBox{ VertexType data; //存与顶点有关的信息 EBox *firstedge; //指向第一条依附于该顶点的边 }VerBox; data firstedge

#define MAX_VERTEX_NUM 20 typedef struct { VerBox adjmulist MAX_VERTEX_NUM]; int vernum,edgenum; }AMLGraph; 例 a e c b d 返回 1 2 3 a c d b 4 e 0 1 0 3 2 3 2 1 2 4 4 1 ^ ^ ^ ^ ^

知识点小结 本知识点主要讲解图的四种不同的存储结构——邻接矩阵、邻接表、邻接多重表和十字链表, 讲解不同的存储特点、描述方法,重点掌握最常用的存储方式邻接矩阵和邻接表。