利用图实现最短路径导航
方法步骤:
1、创建图的数据结构。
图由顶点和边组成,顶点用于存放数据结构,边用于设置权重并且链接下一个顶点。此次设计采用邻接列表的方式构建图,所以节点结构体中含有表头。
邻接列表主要是以单链表的数据结构实现将图划分成列表,每个节点所呢个到达的下一个节点构成链表。链表采用前插法插入数据。
1)图的结构体
#define MAX_SIZE 1024
typedef struct _EdgeNode {
//与节点相连的边
int adjvex; //邻接的顶点
int weight; //权重
_EdgeNode* next; //下一条边
}EdgeNode;
typedef struct _VertexNode {
//顶点节点
char data; //节点数据
_EdgeNode* first; //指向邻接的第一条边
}VertexNode, AdjList;
typedef struct _AdjListGraph {
AdjList* adjList;
int vex; //顶点数
int edge; //节点
}AdjListGraph;
利用以上结构体实现图的其他函数如:图的初始化,图的创建和图的坐标定位等。
int Location(AdjListGraph& G, char data) {
for (int i = 0; i < G.vex; i++) {
if (G.adjList[i].data == data) return i;
}
return -1;
}
//初始化图
void initGraph(AdjListGraph& G) {
G.adjList = new AdjList[MAX_SIZE];
G.edge