邻接表和邻接矩阵
——图的两种存储结构
邻接矩阵
用二维数组表示:
如下图所示,图中有1指向2,1指向3,3指向4,4指向1共四种情况。
故在矩阵中,[1][2],[1][3],[3][4],[4][1]四个位置被标记上了1,而其余为0的地方则表示没有指向关系。
注意点:
1.由这种标记方式可以看出,对于无向图来说,(a,b)和(b,a)属于同一条边,故在矩阵中[a][b],[b][a]都会被标记上,所以无向图的邻接矩阵是关于主对角线的对称矩阵,而有向图的邻接矩阵一般不具有对称性;
2.对于无向图来说,顶点i的度=邻接矩阵第i行的元素的和;
对于有向图来说,顶点i的入度=第i列元素的和,顶点i的出度=第i行元素的和;
3.用0,1标记大多只针对无权图,如果为有权图的话标记的为权值;
缺点:
一般图的边比较少,且邻接矩阵的非零元素比较少,属于稀疏矩阵,所以很大程度上会造成空间的浪费。
邻接表
它是图的链式存储结构:
1.为每一个顶点建立一个单链表;
2.第i个单链表中包含顶点Vi的所有邻接顶点;
表示法:
1.头结点:
Date(数据域:存放顶点Vi的信息) | Firstarc(链域:指向单链表的第一个结点) |
2.表结点:
Adjvex (邻接点域:表Vi邻接点的位置) |
Nextarc (链域:指向下一个边或弧的结点) |
Info、 (数据域:如权值) |
3.每个单链表都设有一个头结点;
4.每个单链表的头结点另外用顺序存储结构存储。
注意:
1.第i条链表上的节点数为Vi的出度(求出度容易,求入度难,求入度用逆邻接表);
2.邻接表是不唯一的,因为各个边结点的入链的顺序是任意的;
3.邻接表形成之后,形成的图却是唯一的;
相关推荐
分别以邻接矩阵和邻接表作为图的存储结构 很好的资料
图的邻接矩阵和邻接表实现, 深度搜索, 广度搜索, Dijstra最短路径
图的邻接矩阵和邻接表存储形式,并实现深度优先遍历和广度优先遍历
//以下定义邻接矩阵类型 typedef struct { int no; //顶点编号 int info; //顶点其余的信息 }VertexType; typedef struct { int edges[MAXV][MAXV]; //邻接矩阵 int n,e; //顶点数,弧数 VertexType vexs[MAXV...
图的C++的邻接表和邻接矩阵完整实现,功能齐全,运行界面效果好
领会图的两种主要存储结构、图基本运算算法和两种遍历算法设计内容:编写一个程序,设计带权图的邻接矩阵与邻接表的创建和输出运算,并在此基础上设计一个主程序完成如下功能:(1)建立如图所示的有向图G的邻接矩阵...
图的邻接矩阵存储和邻接表存储 代码完整 有注释,有需要的可以下载看看,基本是图的邻接矩阵存储和邻接表存储 代码完整
图的邻接表 邻接矩阵表示的迪杰斯特拉算法 普里姆算法 克鲁斯卡尔算法 用c++实现 codeblocks编译通过
自行实现图的邻接矩阵和邻接表存储结构 邻接矩阵类和邻接表类的实现及测试函数 功能全 代码易理解 可直接运行
假设图中各边的权值都相等,以邻接矩阵和邻接表为存储结构,分别写出算法: (1)求顶点vi到顶点vj(i<>j)的最短路径 (2)求源点vi到其余各顶点的最短路径 要求输出路径上的所有顶点(利用BFS遍历的思想)
程序用交互方式完成图的邻接矩阵和邻接表的构造,并提供了DFS和BFS算法。
严蔚敏《数据结构》中的图的邻接矩阵和邻接表的建立与输出,两种形式的C++代码,数据结构课写过的作业,基础的C++代码。
用邻接矩阵和邻接链表的来实现克鲁斯卡尔算法。代码中有详细的注释
图的邻接表与邻接矩阵建立,广度优先遍历,深度优先递归非递归遍历,从文件读入建立图(有向图与无向图)
C语言程序 图的邻接表和矩阵的转换 。。。。。。。。。。。。。
任意给出个图(本实验中使用有向图)的存储方式,试设计一个程序,在计算机中完成 该图的当前存储方式到另外一种存储方式的转换。
/*以下定义邻接表类型*/ typedef struct ANode /*弧的结点结构类型*/ { int adjvex; /*该弧的终点位置*/ struct ANode *nextarc; /*指向下一条弧的指针*/ InfoType info; /*该弧的相关信息,这里用于存放权值*/ }...
程序设计任务: 设计一个程序,实现以邻接表或者邻接矩阵为存储结构,实现连通无向图的深度优先和广度优先遍历。基本要求:以邻接表或者邻接矩阵为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的...
设计一个有向图和一个无向图,使用邻接矩阵和邻接表存储结构,完成在这两种存储结构下有向图和无向图的DFS(深度优先遍历)和BFS(广度优先遍历)的操作。 三、实验要求: 1. 根据实验内容编程,画出你所设计的图,...
2、 掌握在邻接矩阵或邻接表存储结构下图的深度优先和广度优先遍历算法的设计方法。 3、 进一步掌握递归算法思想。 二、 实验要求 1、 定义邻接矩阵存储结构或邻接表存储结构。 2、 按照建立一个带权有向图的操作...