#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#define MaxVertexNum 100 //最大定点数
// 邻接矩阵法
typedef char VertexType; // 定义点对应的数据类型
typedef int EdgeType; // 定义边对应的数据类型
typedef struct MGraph {
VertexType ver[MaxVertexNum]; // 记录点
EdgeType edge[MaxVertexNum][MaxVertexNum]; // 邻接矩阵
int vernum, edgenum; // 记录点和边的数量
} MGraph;
// 邻接表法
typedef struct ENode1 {
int place; // 边连接的另一个点的数组位置
struct ENode1* enode; // 另一个链接的结点
} ENode1;
typedef struct VNode1 {
VertexType data; // 点的数据类型
ENode1* forenode; // 第一个链接的点
} VNode1, VList1[MaxVertexNum];
typedef struct ALGraph {
VList1 vlist; // 邻接表
int vernum, edgenum; // 边数和点数
} ALGraph;
// 十字链表法
typedef struct ENode2 {
int tailvex, headvex; // 弧尾和弧头的点位置
struct ENode2* SameTail, *SameHead; // 相同弧尾或弧头的下一条边。
int edge_info; // 边上的存储信息
} ENode2;
typedef struct VNode2 {
VertexType data;
ENode2* Tail, *Head; // 相连的弧尾或弧头的第一条边。
} VList2[MaxVertexNum];
typedef struct TGraph {
VList2 vlist;
int vernum, edgenum;
} TGraph;
// 邻接多重表
typedef struct ENode3 {
int anode, bnode; // 一条边两端的A点,B点
struct ENode3* aedge, *bedge; // 与A点链接的下一条边,与B……
int info; // 边的信息
} ENode3;
typedef struct VNode3 {
VertexType data;
ENode3* enode; // 与点链接的第一条边
} VNode3, VList3[MaxVertexNum];
typedef struct DGraph {
VList3 vlist;
int vernum, edgenum;
} DGraph;
int main() {
return 0;
}