typedef struct ArcCell{
VRType adj; //对于无权图,用1或0表示是否相邻;对于带权图,则为权值类型
InfoType *info; //该弧相关信息的指针
}ArcCell;
AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct{
VertexType vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnum,arcnum;
GraphKind kind; //图的类型
}Graph;十字链表(邻接表和逆邻接表相关两结点合并成一个以其中一个邻接表为弧尾的弧和逆邻接表为弧头的弧)
typedef struct ArcBox{
int tailvex,headvex; //该弧的尾和头顶点的位置
struct ArcBox *hlink,*tlink; //分别指向下一个弧头相同和弧尾相同的指针
InfoType *info; //该弧相关信息的指针
}ArcBox;
typedef struct VexNode{
VertexType data;
ArcBox *firstin,*firstout;
}VexNode;
typedef struct{
VexNode xlist[MAX_VERTEX_NUM];
int vexnum,nrcnum;
}Graph;
图的数组表示(邻接矩阵),比书上的一种小改进, 和图的十字链表存储表示解释
最新推荐文章于 2023-07-25 19:41:06 发布