知识大全 图 - 图的存储结构 - 邻接表表示法(二)

Posted 结点

篇首语:临文乍了了,彻卷兀若无。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 图 - 图的存储结构 - 邻接表表示法(二)相关的知识,希望对你有一定的参考价值。

   邻接表的形式说明及其建表算法

  ( )邻接表的形式说明

  typedef struct node//边表结点

  int adjvex; //邻接点域

  struct node *next; //链域

  //若要表示边上的权 则应增加一个数据域

  EdgeNode;

  typedef struct vnode //顶点表结点

  VertexType vertex; //顶点域

  EdgeNode *firstedge;//边表头指针

  VertexNode;

  typedef VertexNode AdjList[MaxVertexNum];//AdjList是邻接表类型

  typedef struct

  AdjList adjlist;//邻接表

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

  ALGraph; //对于简单的应用 无须定义此类型 可直接使用AdjList类型

  ( )建立无向图的邻接表算法

  void CreateALGraPh(ALGrahp *G)

  //建立无向图的邻接表表示

  int i j k;

  EdgeNode *s;

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

  for(i= ;i n;i++)//建立顶点表

  G >adjlist[i] vertex=getchar(); //读入顶点信息

  G >adjlist[i] firstedge=NULL;//边表置为空表

  for(k= ;k e;k++)//建立边表

  scanf( %d%d &i &j);读入边(v i v j )的顶点对序号

  s=(EdgeNode *)malloc(sizeof(EdgeNode)); //生成边表结点

  s >adjvex=j; //邻接点序号为j

  s >next=G >adjlist[i] firstedge;

  G >adjlist[i] firstedge=s; //将新结点*s插入顶点v i 的边表头部

  s=(EdgeNode *)malloc(sizeof(EdgeNode));

  s >adjvex=i; //邻接点序号为i

  s >next=G >adjlist[j] firstedge;

  G >adjlistk[j] firstedge=s; //将新结点*s插入顶点v j 的边表头部

  //end for

  CreateALGraph

  该算法的时间复杂度是O(n+e)

  注意

  ① 建立有向图的邻接表更简单 每当读人一个顶点对序号 时 仅需生成一个邻接序号为j的边表结点 将其插入到v j 的

  出边表头部即可

  ② 建立网络的邻接表时 需在边表的每个结点中增加一个存储边上权的数据域

  图的两种存储结构比较

  邻接矩阵和邻接表是图的两种最常用的存储结构 它们各有所长 下面从及执行某些常用操作的时间这两方面来作一比较

  

> cha138/Article/program/sjjg/201311/23842

相关参考

知识大全 数据结构 7.2 无向图的邻接多重链表存储表示

  希赛教育计算机专业考研专业课辅导招生  希赛教育计算机专业考研专业课辅导视频  希赛教育计算机考研专业课在线测试系统  类似于有向图的十字链表若将无向图中表示同一条边的两个结点合在一起将得到无向图

知识大全 图 - 图的存储结构 - 邻接矩阵表示法

  图的存储表示方法很多这里介绍两种最常用的方法至于具体选择哪一种表示法主要取决于具体的应用和欲施加的操作  为了适合用C语言描述以下假定顶点序号从开始即图G的顶点集的一般形式是V(G)=vvi…Vn

知识大全 数据结构之邻接表表示法

邻接表的表示方法  邻接表(AdjacencyList)是图的一种链式存储结构在邻接表中对图中每个顶点建立一个单链表第i个单链表中的结点表示依附于顶点vi的边(对有向图是以顶点vi为尾的弧)  邻接表

知识大全 09年自考《数据结构》各章要点二[4]

  图的存储结构  ·邻接矩阵表示法用一个n阶方阵来表示图的结构是唯一的适合稠密图  ·无向图邻接矩阵是对称的  ·有向图行是出度列是入度  建立邻接矩阵算法的时间是O(n+n^+e)其时间复杂度为O

知识大全 数据结构考研分类复习真题 第七章 图[29]

  .有向图的邻接表存储如下().画出其邻接矩阵存储().写出图的所有强连通分量().写出顶点a到顶点i的全部简单路径【东北大学一(分)】  .试用下列三种表示法画出网G的存储结构并评述这三种表示法的

知识大全 数据结构考研分类复习真题 第七章 图[53]

  .写出从图的邻接表表示转换成邻接矩阵表示的算法用类PASCAL语言(或C语言)写成过程形式【南开大学四 (分)】  类似本题的另外叙述有  ()已知某个图的邻接表试建立该图的相邻矩阵【天

知识大全 数据结构考研分类复习真题 第七章 图[45]

  .对于如下的加权有向图给出算法Dijkstra产生的最短路径的支撑树设顶点A为源点并写出生成过程【吉林大学一 (分)】  .已知图的邻接矩阵为  当用邻接表作为图的存储结构且邻接表都按序

知识大全 数据结构考研分类复习真题 第七章 图[49]

  .对有五个结点ABCDE的图的邻接矩阵  ().画出逻辑图  ().画出图的十字链表存储  ().基于邻接矩阵写出图的深度广度优先遍历序列  ().计算图的关键路径【华南师范大学三(分)】  .何

知识大全 数据结构考研分类复习真题 第七章 图[25]

  .假设给定的有向图是用邻接表表示作为输入的是图中顶点个数n和边的个数m以及图的m条边在下面的程序中我们用readdata程序过程输入图的信息并建立该图的邻接表利用topol程序过程获得图中顶点的一

知识大全 数据结构考研分类复习真题 第七章 图[54]

  .已知无向图采用邻接表存储方式试写出删除边(ij)的算法 【东南大学三(分)】  类似本题的另外叙述有  ()一个无向连通图的存储结构以邻接表的形式给定设计算法删除该图中的一条边(ij)