- 十字链表是有向图的链式存储结构,可以看成是有向图的邻接表和逆邻接表的结合,
- 顶点结点是顺序存储,其结构是data数据域, firstin指针指向以此节点为弧头的弧结点(构成的链表叫做弧头链表) , firstout以此结点位弧尾的弧结点(构成的链表叫做弧尾链表)
- 弧结点是链式存储,结构包括5个域tailvex尾域,指示弧尾在图中的位置,headvex头域,表示弧头在图中的位置,链域hlink指向弧头相同的另一个结点,链域tlink指向弧尾相同的另一个结点,指向弧的相关信息
上代码:
// Orthogonal list.十字链表是有向图的链式存储结构,可以看成是有向图的邻接表和逆邻接表的结合,
//顶点结点是顺序存储,其结构data是数据域, firstin指针指向以此节点为弧头的弧结点 , firstout以此结点位弧尾的弧结点
//弧结点是链式存储,结构包括5个域tailvex尾域,指示弧尾在图中的位置,headvex头域,表示弧头在图中的位置,链域hlink指向弧头相同的另一个结点,链域tlink指向弧尾相同的另一个结点,info指向弧的相关信息;
//typedef 是对已有的数据类型进行别名替换,#define是简单的字符串替换,注意两者区别
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define vexmaxnum 100
#define DEBUG
typedef char vextype;
typedef int edg