边存储结构体:链式前向星
2012-04-02 15:18
561 查看
边结构体:
还需一个整型以及一个数组辅助变量。完整结构为:
Adj取英文中的Adjacent前3个字母,意为相邻。这儿存储的是每个顶点的最后一条边。
图的初始化函数为:
添加边的函数为:
遍历以某顶点u为初始点的所有边:
如果每条边还需有其他的元素的话,Edge的结构体中还需加入对应元素。
该结构体与邻接矩阵相比的话。在稀疏图上完胜,在稠密图上,则还是建议使用邻接矩阵。
typedef struct { int to; int next; } Edge;
还需一个整型以及一个数组辅助变量。完整结构为:
#define MaxV 100 #define MaxE 10000 typedef struct { int to;/*当前边的终端点*/ int next;/*也是以当前边的初始点为初始点的、与当前边相邻的另一条边在E[]中的index*/ } Edge; Edge E[MaxE]; int Adj[MaxV];/*每个顶点的最后一条边*/ int Size;/*边的条数*/
Adj取英文中的Adjacent前3个字母,意为相邻。这儿存储的是每个顶点的最后一条边。
图的初始化函数为:
void Init(int N)/*N为当前图的顶点数*/ { int i; for(i=0; i<=N; ++i) { Adj[i]=-1; } Size=0; return; }
添加边的函数为:
void Add_Edge(int u,int v)/*添加一条有向边u-->v*/ { E[Size].to=v; E[Size].next=Adj[u]; Adj[u]=Size++; return; }
遍历以某顶点u为初始点的所有边:
void Show(int u) { int i; for(i=Adj[u]; ~i; i=E[i].next) { printf("%d-->%d\n",u,E[i].to); } return; }
如果每条边还需有其他的元素的话,Edge的结构体中还需加入对应元素。
该结构体与邻接矩阵相比的话。在稀疏图上完胜,在稠密图上,则还是建议使用邻接矩阵。
相关文章推荐
- 链式前向星存储结构
- 边存储结构体:链式前向星
- 采用链式前向星结构存储的图深搜和广搜算法
- 图的链式前向星存储结构
- 图的(链式)前向星存储结构
- 图的链式前向星存储结构
- 图的存储结构---(*链式前向星*)
- 【线性表】链式存储结构之:单链表
- 数据结构之C/C++实现二叉树的链式存储
- JAVA数据结构之线性表的链式存储结构——双向链表
- 数据结构中链式存储的注意点(线性与栈)
- 数据结构和算法笔记 lesson4 线性表链式存储结构 单链表
- 线性表的链式存储结构
- 数据结构之线性表——栈的链式存储
- 队列的链式存储结构与操作
- 数据结构与算法学习(二)链式存储结构LinkedList源码分析
- 数据结构(八)线性表链式存储结构
- 【线性表】链式存储结构之:循环链表
- 数据结构——串的链式存储
- 栈的链式存储结构及其基本运算的实现