有没有帮忙看看哪个指针出错了,自己能力有限没找出来
//一个图 求最短路径(Dijstrla或者Floyed任意选择)
//这里选用Dijstrla算法
#define maxm 32767
int* dist = new int[100];
int* path = new int[100];
bool* s = new bool[100];
//选择邻接矩阵存放图(无向图)
typedef struct {
char Vexs[100];
int Arcs[100][100];
int Vexnum, Arcnum;
}AMGraph;
//确定元素在Vexs数组中的位置 并返回下标
int LocateVex(AMGraph G,char v) {
for (int i = 0; i if (G.Vexs[i] == v)
return i;
else
{
return -1;
}
}
}
//通过键盘输入 创建一个无向图
void GreatAMGraph(AMGraph& AMG) {
int i, j, k;
cout << "请输入定点数以及边数并用空格键分开:" << endl;
cin >> AMG.Vexnum >> AMG.Arcnum;
cout << endl;
cout << "请输入顶点的名字:" << endl;
for (i = 0; i < AMG.Vexnum; i++)
{
cout << "请输入第" << (i + 1) << "个顶点" << endl;
cin >> AMG.Vexs[i];
}
cout << endl;
for (i = 0; i < AMG.Vexnum; i++)
{
for (int j = 0; j < AMG.Vexnum; j++)
{
AMG.Arcs[i][j] = maxm;
}
}
cout << "请输入顶点以及依附の权值以格式a b 10" << endl;
for (k = 0; k < AMG.Arcnum; k++)
{
char v1, v2;
int weight;
cout << "请输入两个顶点的名字以及他们的权值以格式a b 10" << endl;
cin >> v1 >> v2 >> weight;
i = LocateVex(AMG, v1);
j = LocateVex(AMG, v2);
AMG.Arcs[i][j] = weight;
AMG.Arcs[j][i] = weight;
}
}
//迪杰斯特拉算法定义
void Dijstrla(AMGraph G,int v0) {
int v,i,w,min,n;
n = G.Vexnum;
for ( v = 0; v < n; v++)
{
s[v] = false;
dist[v] = G.Arcs[v0][v];
if (dist[v][v] = v0;
else
path[v] = -1;
}
s[v0] = true;
dist[v0] = 0;
for (i = 1; i < n; i++)
{
min = maxm;
for (w = 0; w < n; w++)
if (!s[w] && dist[w] < min) {
v = w;
min = dist[w];
}
s[v] = true;
for (w = 0; w < n; ++w)
if (!s[w]&&(dist[v]+G.Arcs[v][w])[w])
{
dist[w] = dist[v] + G.Arcs[v][w];
path[w] = v;
}
}
}
void showPath(AMGraph G,int start,int end){
if (path[end]!=-1)
{
showPath(G, start, path[end]);
cout << G.Vexs[path[end]] << "--";
}
}
int main() {
AMGraph g;
GreatAMGraph(g);
cout << endl;
cout << "请输入开始顶点和结束顶点用空格键分开:" << endl;
char start, end;
int sn, en;
cin >> start >> end;
sn = LocateVex(g, start);
en = LocateVex(g, end);
//调用迪杰斯特拉算法
Dijstrla(g, sn);
//显示路径
showPath(g, sn, en);
system("pause");
return 0;
}
程序运行到showPath函数的时候产生以下异常:
报错:0x00007FF678E84ADD 处(位于 暨大复试专项.exe 中)引发的异常: 0xC0000005: 读取位置 0x000001F70AFBE7A4 时发生访问冲突。
希望可以帮忙看看代码是哪里出了问题 感激不尽!
1.检查算法的输入数据是否正确,是否满足解题要求; 2.检查算法的算法步骤是否正确,是否符合解题要求; 3.检查算法的输出结果是否正确,是否符合解题要求。 4.检查算法的时间复杂度和空间复杂度,确保算法的有效性和可行性。
你看一下是不是path 数组未初始化,导致在 showPath 函数中出现了访问冲突。