图的邻接矩阵存储结构:
typedef char VertexType;
typedef int EdgeType;
#define MaxVex 100
#define Infinity 65535
typedef struct
{
VertexType vexs[MaxVex];
EdgeType arc[MaxVex][MaxVex];
int numVertexes, numEdges;
} MGraph;
图的邻接表存储结构:
#define Maxvex 100
typedef char VexType; /* 顶点类型应由用户定义 */
typedef int EdgeType; /* 边上的权值类型应由用户定义 */
typedef struct EdgeNode /* 边表结点 */
{
int adjvex; /* 邻接点域,存储该顶点对应的下标 */
EdgeType weight; /* 用于存储权值,对于非网图可以不需要 */
struct EdgeNode *next; /* 链域,指向下一个邻接点 */
} EdgeNode;
typedef struct VexNode /* 顶点表结点 */
{
VexType data; /* 顶点域,存储顶点信息 */
EdgeNode *firstedge; /* 边表头指针 */
} VexNode, AdjList[Maxvex];
typedef struct
{
AdjList adjList;
int numVexes, numEdges; /* 图中当前顶点数和边数 */
} GraphAdjList;
十字链表:
我们重新定义顶点表结点结构