定义
十字链表(Orthogonal List)是有向图的另一种链式存储结构。该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的。用十字链表来存储有向图,可以达到高效的存取效果。同时,代码的可读性也会得到提升。
示例图
顶点结构
边结构(在本例子中忽略了每条边的权值)
画图过程
1、先画出顶点以及由该节点发出的所有边节点
2、填写每个边节点的信息,画出顶点指向进入该顶点的第一条边节点
3、将终止节点相同的边节点相连
4、将剩下的指针附上空
typedef struct{ // 顶点结构
int data;
struct sNode* firstIn;
struct sNode* firstOut;
}pNode;
typedef struct sNode{ //边结点结构
int tailvex;
int headvex;
struct sNode* hlink;
struct sNode* tlink;
}sNode;
typedef struct {
pNode L[10];
int pCount;
int sCount;
}*acrossLink;