#define MAX 20
typedef struct ArcNode{
int adjvex;//该弧指向的顶点的位置
struct ArcNode *nextarc;//指向下一条弧的指针
int *info; //该弧相关信息的指针
}ArcNode;
typedef struct VNode{
int data;
ArcNode *firstarc;//指向第一条依附该顶点的弧的指针
}VNode,AdjList[MAX];
typedef struct{
AdjList vertices;
int vexnum,arcnum;//顶点数和边数
int kind;//图的种类标志
}ALGraph;//邻接表
#define MAX 20
typedef emnu{unvisited,visited} VisitIf;
typedef struct EBox{
VisitIf mark; //访问标记
int ivex,jvex; //该边依附的两个顶点的位置
struct EBox *ilink,*jlink;//分别指向依附这两个顶点的下一条边
int *info; //该边的信息指针
}EBox;
typedef struct VexBox{
int data;
EBox *firstedge;
}VexBox;
typedef struct{
VexBox adjmulist[MAX];
int vexnum,edgenum;//顶点数和边数
}AMLGraph; //多重邻接表
#define MAX 20
typedef struct ArcBox{
int tailvex,headvex; //弧的尾顶点和头顶点的位置
struct ArcBox *hlink,*tlink;
int *info; //该弧相关信息的指针
}ArcBox;
typedef struct VexNode{
int data;
ArcBox *firstin,*firstout;//分别指向第一条入弧和出弧
}VexNode;
typedef struct{
VexNode xlist[MAX];
int vexnum,arcnum;//顶点数和弧数
}OLGraph;//十字邻接表