图的三种基本表示: 邻接表,邻接矩阵和十字链表
//邻接表
#define Infinity INT_MAX
#define Max_Vertex_Num 20
typedef enum {DG,DN,AG,AN} GraphKind;
typedef struct ArcCell {
int arcweight;
//char *info;
}ArcCell, AdjMatrix[Max_Vertex_Num][Max_Vertex_Num];
typedef struct {
int vexs[Max_Vertex_num];
AdjMatrix arcs;
int vexnum,arcnum;
Graphkind kind;
}
//邻接矩阵
#define Max_Vertex_Num 20
typedef struct ArcNode{
int NodeNum;
int weight;
struct ArcNode *NextArc;
};
typedef struct VNode{
int vexdata;
struct ArcNode *firstarc;
} ArcList[Max_Vertex_Num];
typedef struct VArc{
ArcList VArray;
int VerNum,ArcNum;
GraphKind DG;
}AGraph;
//十字链表
typedef struct ArcNode{
int TailNodeNum,HeadNodeNum;
struct ArcNode *HeadNode,*TailNode;
int weight;
};