图 - 图的存储结构 - 邻接矩阵表示法

 我来答
濒危物种1718
2022-10-30 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7224
采纳率:100%
帮助的人:54.2万
展开全部

  图的存储表示方法很多 这里介绍两种最常用的方法 至于具体选择哪一种表示法 主要取决于具体的应用和欲施加的操作

  为了适合用C语言描述 以下假定顶点序号从 开始 即图G的顶点集的一般形式是V(G)={v v i … V n }

  图的邻接矩阵表示法

   图的邻接矩阵表示法

  在图的邻接矩阵表示法中

  ① 用邻接矩阵表示顶点间的相邻关系

  ② 用一个顺序表来存储顶点信息

   图的邻接矩阵(Adacency Matrix)

  设G=(V E)是具有n个顶点的图 则G的邻接矩阵是具有如下性质的n阶方阵

  

  【例】下图中无向图G 和有向图G 的邻接矩阵分别为A l 和A

  

   网络的邻接矩阵

  若G是网络 则邻接矩阵可定义为

  

  其中

  w ij 表示边上的权值;

  ∞表示一个计算机允许的 大于所有边上权值的数

  【例】下面带权图的两种邻接矩阵分别为A 和A

  

   图的邻接矩阵存储结构形式说明

  #define MaxVertexNum l //最大顶点数 应由用户定义

  typedef char VertexType; //顶点类型应由用户定义

  typedef int EdgeType; //边上的权值类型应由用户定义

  typedef struct{

  VextexType vexs[MaxVertexNum] //顶点表

  EdeType edges[MaxVertexNum][MaxVertexNum];

  //邻接矩阵 可看作边表

  int n e; //图中当前的顶点数和边数

  }MGragh;

  注意

  ① 在简单应用中 可直接用二维数组作为图的邻接矩阵(顶点表及顶点数等均可省略)

  ② 当邻接矩阵中的元素仅表示相应的边是否存在时 EdgeTyPe可定义为值为 和 的枚举类型

  ③ 无向图的邻接矩阵是对称矩阵 对规模特大的邻接矩阵可压缩存储

  ④ 邻接矩阵表示法的空间复杂度S(n)= (n )

   建立无向网络的算法

  void CreateMGraph(MGraph *G)

  {//建立无向网的邻接矩阵表示

  int i j k w;

  scanf( %d%d &G >n &G >e); //输入顶点数和边数

  for(i= ;i n;i++) //读人顶点信息 建立顶点表

  G >vexs[i]=getchar();

  for(i= ;i n;i++)

  for(j= ;j n;j++)

  G >edges[i][j]= ; //邻接矩阵初始化

  for(k= ;k e;k++){//读入e条边 建立邻接矩阵

  scanf( %d%d%d &i &j &w);//输入边(v i v j )上的权w

  G >edges[i][j]=w;

  G >edges[j][i]=w;

  }

  }//CreateMGraph

  该算法的执行时间是 (n+n +e) 由于e <n )。.lishixinzhi

lishixinzhi/Article/program/sjjg/201311/23848

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式