有向网(有权值)
存储:邻接矩阵
最短路径:迪杰斯特拉算法
输出部分:邻接矩阵输出,最短路径输出
- 头
#include <stdio.h>
#include <stdlib.h>
#define Max 100 //定义顶点最大容量
#define MaxWeight 32767 //表示极大值
//二进制的原码表示,范围是-32767-32767
typedef struct
{
char Vexs[Max]; //顶点信息的数组
int arcs[Max][Max]; //边信息的数组
int vexnum; //顶点数
int arcnum; //边数
}AMGraph;
struct pathdij //因为要输出路径,设的结构体,也可不
{
int path; //存储该节点的前驱节点!
int D; //存储到该节点的最短路程!
}dij[Max];
int CreateUDN(AMGraph *G); //邻接矩阵创建有向网
int LocateVex(AMGraph G,char v); //找到字符v的下标
void output_AM(AMGraph G); //输出邻接矩阵
void Dijkstra(AMGraph G); //迪杰斯特拉算法求最短路径
void show_dij(AMGraph G,char d); //输出迪杰斯特拉
- 邻接矩阵存储有向网
`int CreateUDN(AMGraph *G)
{
char v1,v2;
int x,y,w;
printf("Please enter the number of vertices and edges of the graph:");
scanf("%d%d",&G->vexnum,&G->arcnum);
for(int i=0;i<G->vexnum;i++) //图的初始化
{
for(int j=0;j<G->vexnum;j++)
{
if(i==j)
G->arcs[i][j]=0;
else
G->arcs[i][j]=MaxWeight;
}