概念:
邻接表
邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。
邻接表是图的一种最主要存储结构,用来描述图上的每一个点。对图的每个顶点建立一个容器(n个顶点建立n个容器),第i个容器中的结点包含顶点Vi的所有邻接顶点。实际上我们常用的邻接矩阵就是一种未离散化每个点的边集的邻接表。
这篇博客接着上一篇邻接矩阵表示图,是我在学习数据结构根据伪码写出的代码,有诸多不足,希望大神看到能指点一二。
首先是边
此处不需要存储起始顶点,只需要存储终顶点就可以了
#define MaxVertexNum 10
typedef int Vertex;
//边
struct AdjVNode{
Vertex AdjV;//邻接点(终点)下标
int Weight;//权重
struct AdjVNode *Next;
};
typedef struct AdjVNode *PtrToAdjVNode;
接下来是邻接表结构
typedef struct VNode{
PtrToAdjVNode FristEdge;
int Data;//可用于存单链上的顶点数,此项可有可无
}AdjList[MaxVertexNum];
struct GNode{
int Nv;//顶点数
int Ne;//边数
AdjList G;//邻接表
};
typedef struct GNode *PtrToGNode