有向图的邻接表用一个结构体LGraph存储表示,其中包括3个成员:顶点数组vertexs,顶点数vexnum和边数arcnum,其中顶点数组vertexs中每个元素都是VNode结构体变量。VNode结构体变量次年初图中每个顶点,它包含3个成员:顶点信息,出边表的表头指针和入边表的表头指针,其中后面两个成员都是ArcNode结构体类型的指针。ArcNode结构体存储边链表中的边节点,它包含两个成员:变的另一个邻接点的序号,以及指向下一个边节点的指针。
#define MAXN 100
struct ArcNode //边节点;
{
int adjvex; //有向边的另一个邻接点的序号;
ArcNode *nextarc; //指向下一个边节点的指针;
};
struct VNode //顶点;
{
int data; //顶点信息;
ArcNode *head1; //出边表的表头指针;
ArcNode *head2; //入边表的表头指针;
};
struct LGraph //图的邻接表存储结构;
{
VNode vertexs[MAXN]; //顶点数组;
int vexnum, arcnum; //顶点数,边(弧)数;
};
LGraph lg; //图(邻接表存储结构)
出度入度邻接表存储结构形式代码实现如下:
#include #include #include #i