




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构
第三十九课图的存储结构第三十一课图的存储结构本课主题:图的存储结构教学目的:掌握图的二种存储表示方法教学重点:图的数组表示及邻接表表示法教学难点:邻接表表示法授课内容:一、数组表示法用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。1﹑邻接矩阵的定义
有n个顶点的图G=(V,{VR})的邻接矩阵为n阶方阵,其定义为:2﹑无向图邻接矩阵的性质无向图的邻接矩阵是对称矩阵;顶点vi的度是邻接矩阵中第i行(或第i列)的元素(1)之和。3﹑有向图邻接矩阵的性质有向图的邻接矩阵不一定是对称矩阵;顶点vi的出度是邻接矩阵中第i行元素之和,入度是邻接矩阵中第i列的元素之和4﹑网的邻接矩阵将邻接矩阵中的0、1换成权值,就是网的邻接矩阵。5﹑邻接矩阵的优缺点优点:容易实现图的前4个操作,即判定顶点间有无边(弧),容易计算顶点的度(出度、入度);缺点:所占空间只和顶点个数有关,和边数无关,在边数较少时,空间浪费较大。6﹑图的抽象数据类型—数组(邻接矩阵)存储表示(1)#defineINFINITYINT_MAX//最大值无穷大#defineMAX_VERTEX_NUM20//最大顶点个数typedef
enum{DG,DN,AG,AN}GraphKind;//有向图,有向网,无向图,无向网typedef
struct
ArcCell{VRType
adj;//VRType是顶点关系类型。对无权图,用1或0表示相邻否,对带权图,则为权值类型InfoType*info;//该弧相关停息的指针}ArcCell,AdjMatrix[max_vertex_num][max_vertex_num];tpyedef
struct{VertexType
vexs[MAX_VERTEX_NUM];//顶点向量AdjMatrixarcs;//邻接矩阵int
vexnum,arcnum;//图的当前顶点数和弧数GraphKindkind;//图的种类标志}MGraph;6﹑图的抽象数据类型—数组(邻接矩阵)存储表示(2)7﹑建立邻接矩阵的算法(1)#defineMAXN/*定义最大顶点个数N为某一正整数*/typedef
struct{datatypevaxs[MAX+1];/*一维数组存放各顶点的值*/
intarcs[MAX+1][MAX+1];/*定义二维数组存放邻接矩阵*/
int
vexnum,arcnum;/*图中实际顶点数和边(弧)数*/}mgraph;7﹑建立邻接矩阵的算法(2)voidcreatgraph(g)mgraphg;{inti,j,k,vl,v2;
int
LocateVex();/*具体内容见下面算法*/
scanf("%d,%d",&g->vexnum,&g->arcnum);/*输入图g的顶点数和边数*/for(i=1;i<=g->vexnum;i++)
scanf(“%d”,&g->vexs[i]);/*输入各顶点值,设为int型*/7﹑建立邻接矩阵的算法(3)for(i=1;i<=g->vexnum;i++)for(j=l;j<=g->vexnum;j++)g->arcs[i][j]=0;/*初始化邻接矩阵*/for(k=l;k<=g->arcnum;k++){scanf("%d,%d",&vl,&v2);/*依次输入每条边关联的两个顶点的值:若顶点值不是int型,*//*则应设置成其他的格式字串*/i=LocateVex(g,v1);j=LocateVex(g,v2);/*确定两个顶点在图中的位置序号分别为i,j*/if(i!=0&&j!=0)/*如果输入的顶点在图中,则对邻接矩阵中*/{g->arcs[i][j]=l;/*的相应位置及其对称位置的元素赋值为l*/
g-arcs[i][j]=1;}}7﹑建立邻接矩阵的算法(4)int
LocateVex(mgraph*g,intv){inti;for(i=1;g->vexs[i]!=v&&i<=g->vexnum;i++);/*查顶点v的下标i*/if(i>g->vexnum)return(0);elsereturn(i);}二、邻接表
邻接矩阵在稀疏图时空间浪费较大,为了克服这一缺点,可采用邻接表表示法。1﹑邻接表的结点结构(1)顶点结点结构(2)边(弧)结点结构其中,vexdata是顶点数据,firstarc是指向该顶点第一个邻接点的指针,adjvex是邻接点在向量中的下标,info是邻接点的信息,next是指向下一邻接点的指针。2﹑邻接表是顶点的向量结构和边(弧)的单链表结构每个顶点结点包括两个域,将n个顶点放在一个向量中(称为顺序存储的结点表);一个顶点的所有邻接点链接成单链表,该顶点在向量中有一个指针域指向其第一个邻接点。3﹑邻接表的优缺点容易实现图的前4个操作;空间较省;无向图容易求各顶点的度;边表中结点个数是边的两倍;有向图容易求顶点的出度;若求顶点的入度则不容易,要遍历整个表。为了求顶点的入度,有时可设逆邻接表(指向某顶点的邻接点链接成单链表)4﹑建立邻接表的算法(1)#defineMAXn/*定义最大顶点个数n为某一正整数*/typedef
struct
EdgeNode{int
adjnum;/*邻接点域,存储位置序号,为int型*/
DataTypeinfo;
struct
EdgeNode*nextarc;/*链域,指向下一条边(弧)的指针*/}EdgeNode;typedef
struct
VNode/*头结点的类型Vnode*/{DataType
vexdata;/*头结点的数据域*/struct
EdgeNode*link;/*头结点的指针域*/}VNode;4﹑建立邻接表的算法(2)typedef
VNode
AdGraph[MAX+l];/*定义图的类型AdGraph,为一个一维数组*/voidcreatgraph(g)AdGraphg;{int
i,n,e,*p=g,v1,v2;/*假设顶点数据为int型*/scanf("%d,%d",&n,&e);/*输入图g的顶点数n和边数e*/for(i=1;i<=n;i++){scanf(“%d”,p[i].vexdata);/*输入各顶点值,设为int型*/
p[i].link=null;}4﹑建立邻接表的算法(3)for(i=1;i<=e;i++)/*输入e条边*/{scanf("%d,%d",&v1,&v2);/*输入图g的顶点v1和v2*/i=LocateVex(g,v1);j=LocateVex(g,v2);/*确定两个顶点在图中的位置序号分别为i,j*/if(i!=0&&j!=0)/*如果输入的顶点在图中*/{r=(Vnode*)malloc(sizeof(Vnode))r->adjnum=j;r->nextarc=p[i]->link;/*链入i链表中*/
p[i]->link=r;r=(Vnode*)malloc(sizeof(Vnode))r->adjnum=i;r->nextarc=p[j]->link;/*链入j链表中*/
p[j]->link=r;}}5﹑图的十字链表表示法在有向图的邻接表表示法中,查每个顶点的出度非常容易,但查顶点的入度就要遍历整个邻接表。解决的办法是建立逆邻接表,但这成了两个表,也不方便。本节介绍有向图的另一种表示方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025绿化苗木采购合同样本
- 股票出货协议书范本
- 2025年03月浙江台州市玉环市事业单位公开招聘工作人员74人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月广东深圳市光明区统计局公开招聘(选聘)专干4人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月国家卫生健康委统计信息中心应届毕业生公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 物理试题2025年东北三省四城市联考暨沈阳市高三质量监测(二)及答案
- 重庆五一职业技术学院《俄汉互译口译》2023-2024学年第二学期期末试卷
- 户用和村用风光互补发电系统控制器及逆变器项目安全风险评价报告
- 湖南幼儿师范高等专科学校《BIM协同设计》2023-2024学年第一学期期末试卷
- 成都工贸职业技术学院《基础化学实验二》2023-2024学年第二学期期末试卷
- 六年级下册数学教案-比例 西师大版
- 抗日英雄人物杨靖宇介绍
- AI驱动的可持续能源发展
- 整本书阅读《林海雪原》【知识精研】六年级语文下册 (统编版五四制2024)
- 健康日用品设计与研发趋势
- 【化学】常见的盐(第1课时)-2024-2025学年九年级化学下册(人教版2024)
- 新人教版初中英语七至九年级全部课本单词
- 宜宾市新能源产业有限公司招聘笔试冲刺题2025
- 数字化背景下国有企业财会监督体系的构建与实践创新
- 龙游经济开发区下属国资公司招聘笔试冲刺题2025
- 《海上风电设备运输规范》
评论
0/150
提交评论