邻接矩阵表示法创建的有向网,并将该网的顶点表和邻接矩阵进行存盘读盘处理,最后用迪杰斯特拉算法求该有向网任意两结点的最短路径
我现在是大一刚刚结束,这个小项目是我们这学期数据结构的实训任务之一,如有不足,望大家指正。一学期的网课结束了,但感觉学习数据结构这门专业课挺无聊挺吃力的,感觉网课让我懈怠了不少,接下来我会不断的写博客,关于C语言程序设计基础,和数据结构的相关要点讲解和知识点,希望在这个暑假可以和大家共同进步。卑微求赞,求赞,求赞…
其中存盘读盘的文件路径根据个人进行修改。
#include <iostream>
using namespace std;
#include <cstdio>
#include <fstream>
#include<cstring>
#include<cstdlib>
#include<string>
#define MVNum 100
#define MaxInt 32767
#define error 0
#define OK 1
typedef char VerTexType;
typedef int ArcType;
typedef int status;
typedef struct
{
VerTexType vexs[MVNum];
ArcType arcs[MVNum][MVNum];
int vexnum, arcnum;
}AMGraph;
int LocateVex(AMGraph G, VerTexType x)/*求顶点位置函数*/
{
int j = error, k;
for (k = 0; k<G.vexnum; k++)
if (G.vexs[k] == x)
{
j = k;
break;
}
return(j);
}
status CreateUDN(AMGraph &G)
{
void Cunpan(AMGraph G);
int i, j, k, w;
VerTexType v1, v2;
printf("请输入有向网的总顶点数和总边数(用空格隔开):\n");
cin >> G.vexnum >> G.arcnum;
printf("依次输入顶点的名称(如a):\n");
for (i = 0; i<G.vexnum; ++i)
{
printf("请依次输入第%d个顶点:", i + 1);
cin >> G.vexs[i];