邻接表是图的一种链式存储结构。对图的每个顶点建立一个单链表(n个顶点建立n个单链表)
头文件:Graph.h
#ifndef GRAPH_H
#define GRAPH_H
#define MAXSIZE 50
typedef char VertexType; //顶点数据类型
typedef int EdgeType; //边权值类型
typedef struct edgenode{
int adjvex; //当前节点的下标值
EdgeType weight; //边的权值
struct edgenode* next; //边表的域,指向下一个边表节点
}EdgeNode;
typedef struct vertexnode{
VertexType data; //顶点的数据
EdgeNode *pAdjNext; //顶点的域,指向边表节点
}VertexNode,Vertex[MAXSIZE];
typedef struct graph{
Vertex Vertexes; //顶点节点
int NumVertexes,NumEdges;
}Graph;
void CreateGraph(Graph *G); //创建图
void DFS(Graph *G,int i); //深度优先遍历算法
void DFSTraverse(Graph *G); //以深度优先遍历算法遍历图
#endif //GRAPH_H
实现文件:Graph.cpp
#include "Graph.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
bool visited[MAXSIZE];
void CreateGraph(Graph *G)
{
EdgeNode *e = NU