十字链表
将邻接表和逆邻接表结合起来,可同时了解一个图的入度和出度
有向图的十字链表存储表示
#define MAX_VERTEX_NUM 20
//单链表中结点
typedef struct ArcBox{
int tailvex, headvex; //该弧尾,弧头顶点在图中的位置(一维数组下标)
struct ArcBox *hlink, *tlink; //弧头(顶点)相同、弧尾(顶点)相同的下一条弧的链域
InfoType *info; //弧相关信息(如:权值)的指针
}ArcBox;
//一维数组中顶点
typedef struct VexNode{
VertexType data; //顶点数据域
ArcBox *firstin, *firstout; //该顶点第一条入弧和第一条出弧
}VexNode;
//有向图
typedef struct{
VexNode xlist[MAX_VERTEX_NUM]; //存储顶点的一维数组
int vexnum, arcnum; //有向图的当前顶点数和弧数
}OLGraph;