数据结构之图
来源:互联网 发布:知呱呱 靠不靠谱 编辑:程序博客网 时间:2024/05/18 15:53
无向图中的极大连通子图称为联通分量:
1.要是子图;
2.子图是连通的;
3.连通子图含有极大顶点数;
4.具有极大顶点数的连通子图包含依附于这些顶点的所有边。
在有向图G中,如果对于每一对vi,vj
1.无向图的邻接表
- 1.图中顶点用一个一维数组存储,(当然顶点也可以单链表来存储,不过数组可以容易读取顶点信息)。另外对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。
- 2.图中每个顶点vi的所有邻接点构成一个线性表,由于邻接点个数不定,所以用单链表存储,无向图称为顶点v1的边表,有向图称为顶点v1作为弧尾的出边表
其中:
2.有向图
有向图的邻接表,是以顶点为弧尾来存储,这样很容易得到每个顶点的出度。有时为了便于确定顶点的入度或者以顶点为弧头的弧,我们可以建立一个有向图的逆邻接表,即对每个顶点vi都建立一个链接为vi为弧头的表。
对于带权值的网图,可以在边表结点定义中增加一个weight的数据域,存储权值信息。
结点定义的代码
typedef char VertexType; /*顶点类型由用户自定义*/typedef int EdgeType; /*边上的权值类型应由用户定义*/typedef struct EdgeNode{ /*边表结点*/ int adjvex; EdgeType weight; struct EdgeNode *next;}EdgeNode;typedef struct VertexNode{ /*顶点表结点*/ vertexType data; /*顶点域*/ EdgeNode *firstedge; /*边表头指针*/}VertexNode,AdjList[MAXVEX];typedef struct{ AdjList adjList; int numVertexes,numEdges; /*图中当前顶点数和边数*/}VertexNode,AdjList[MAXVEX];
2.十字链表
顶点表结构:
datafirstinfirstout其中firstin表示入边表头指针,指向该节点的入边表中第一个节点,firstout表示出边表头指针,指向该顶点的出边表中的第一个结点;
边表结点结构:
其中tailvex是指弧起点在顶点表的下标,headvex是指弧终点在顶点表中的下标,headlink是指入边表指针域,指向终点相同的下一条边,taillink是指边表指针域,指向起点相同的下一条边。如果是网,还可以增加一个weight域来存储权值。
邻接多重表
无向图中:
边表结点结构如下:
其中ivex和jvex是与某条边依附的两个顶点在顶点表中下标。ilink指向依附顶点ivex的下一条边,jlink指向依附顶点jvex的下一条边。这就是邻接多重表结构。
阅读全文
0 0
- 数据结构之图
- 数据结构复习之【图】
- 数据结构之图
- 基础数据结构之图
- 数据结构之图-邻接矩阵
- 数据结构之图详解
- C++数据结构之图
- Python数据结构之图
- 数据结构之图
- 数据结构之图
- 数据结构算法之图
- 数据结构之图
- 数据结构之--图
- 数据结构之---图(一)
- 数据结构复习之【图】
- 数据结构之图
- 数据结构之--图
- 数据结构之图
- CoordinatorLayout+AppBarLayout+Toolbar简单玩法,MD的behavior简单尝试
- 2017年1月历史文章汇总
- 练习1-13 编写一个程序,打印输入中单词长度的直方图(垂直)
- 2017春招笔试题
- Python不使用int()函数把字符串转换为数字
- 数据结构之图
- 前端开发环境搭建
- Linux vfork简介
- 2017年2月历史文章汇总
- Gradle sync failed: SSL peer shut down incorrectly
- Hibernate初识(上)
- Kotlin编程之可见性修饰词(private,protected,internal,public)
- 传递闭包——洛谷P2881 [USACO07MAR]排名的牛Ranking the Cows
- 记下简单的笔记和最近的问题