有一幅图:
图的“顶点”为:1,2,3,4,5,6,7,8
用下面三个结构体表示图的邻接表存储信息:
//“结点”结构体,存储与“顶点”相连的顶点
typedef struct node
{
int adjVex; //“顶点”对应的“结点”信息
struct node *next; //指向下一个与“某顶点”相连的结点
}EdgeNode;
//顶点结构体
typedef struct vnode
{
char vertex; //顶点信息
EdgeNode *firstEdge; //指向第一个与“此顶点”相连的结点
}AdjList;
//图结构体
typedef struct
{
AdjList vertexs[VERTEXNUM]; //邻接表,即顶点数组
int verNum, edgeNum; //图中当前的顶点和边数
}Graph;
顶点1对应的顶点(结点)为2,3,所以“顶点1的表”构造步骤:
1->NULL //1初始指向的结点位置NULL
1->2->NULL //2指向1指向的结点位置NULL,1指向2
1->3->2->NULL //3指向1指向的结点位置2,1指向3
剩余顶点表构造步骤相同:
2->5->4->1->NULL