- 图的邻接矩阵存储法
#define MaxVertexNum 100
bool graph[MaxVertexNum][MaxVertexNum];
int graph[MaxVertexNum][MaxVertexNum];
- 图的邻接表存储法
把所有节点存储为节点数组,每个节点里有自己的数据和一个边指针,这个边指针相当于一个链表的头指针,这个链表里存放所有与这个节点相连的边,边里存放该边指向的节点编号和下一条边指针

#define MaxVertexNum 100
typedef struct EdgeNode{ int adjvex; struct EdgeNode *next;
}EdgeNode;typedef struct VNode{ VertexType data; EdgeNode *first;
}VNode;typedef struct{int verNum, edgeNum; VNode AdjList[MaxVertexNum];
} ALGraph;
- 图的十字链表存储法(有向图)

typedef struct edgeNode{int headVer, tailVer; struct edgeNode *hLink, *tLink; infoType info;
} edgeNode;typedef struct VNode{VerType data;edgeNode *firstIn, *firstOut;
} VNode;typedef struct{int verNum, edgeNum;VNode XList[verNum];
} OLGraph;
- 图的邻接多重表存储法(无向图)

typedef struct edgeNode{int iVer, jVer; struct edgeNode *iLink, *jLink; infoType info;
} edgeNode;typedef struct VNode{VerType data;edgeNode *firstEdge;
} VNode;typedef struct{int verNum, edgeNum; VNode adjMuList[verNum];
} AMLGraph;