引发了未经处理的异常:读取访问权限冲突。 path 是 0x3571BA56。

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
#define MaxVertexNum 100
#define INF 32767
class MGraph
{
private:
 char vertex[MaxVertexNum];
 int edges[MaxVertexNum][MaxVertexNum];
 int n, e;
public:
 void CreateMGraph(MGraph&);
 void Ppath(int path[100][100], int i, int j);
 void Dispath(int A[100][100], int path[100][100], int n);
 void Floyd(MGraph G);
};
void MGraph::CreateMGraph(MGraph& G)
{
 int i, j, k, p;
 cout << "请输入顶点数和边数:";
 cin >> G.n >> G.e;
 cout << "请输入顶点元素:";
 for (i = 0; i < G.n; i++)
 {
  cin >> G.vertex[i];
 }
 for (i = 0; i < G.n; i++)
 {
  for (j = 0; j < G.n; j++)
  {
   G.edges[i][j] = INF;
   if (i = j)
   {
    G.edges[i][j] = 0;
   }
  }
 }
 for (k = 0; k < G.e; k++)
 {
  cout << "请输入第" << k + 1 << "条弧头弧尾序号和相应的权值:";
  cin >> i >> j >> p;
  G.edges[i][j] = p;
 }
}
void MGraph::Ppath(int path[MaxVertexNum][MaxVertexNum], int i, int j)
{
 int k;
 k = path[i][j];
 if (k == -1)
 {
  return;
 }
 else
 {
  Ppath(path, i, k);
  cout << k;
  Ppath(path, k, j);
 }
}
void MGraph::Dispath(int A[MaxVertexNum][MaxVertexNum], int path[MaxVertexNum][MaxVertexNum], int n)
{
 int i, j;
 for (i = 0; i < n; i++)
 {
  for (j = 0; j < n; j++)
  {
   if (A[i][j] == INF)
   {
    if (i != j)
    {
     printf("从%d到%d没有路径\n", i, j);
    }
   }
   else
   {
    cout << "从" << i << "到" << j << "的路径长度为:" << A[i][j] << "路径为:";
    cout << i;
    Ppath(path, i, j);
    cout << j << endl;
   }
  }
 }
}
void MGraph::Floyd(MGraph G)
{
 int A[MaxVertexNum][MaxVertexNum], path[MaxVertexNum][MaxVertexNum];
 int i, j, k;
 for (i = 0; i < G.n; i++)
 {
  for (j = 0; j < G.n; j++)
  {
   A[i][j] = G.edges[i][j];
   path[i][j] = -1;
  }
  for (k = 0; k < G.n; k++)
  {
   for (i = 0; i < G.n; i++)
   {
    for (j = 0; j < G.n; j++)
    {
     if (A[i][j]>A[i][k] + A[k][j])
     {
      A[i][j] = A[i][k] + A[k][j];
      path[i][j] = path[i][k] + path[k][j];
     }
    }
   }
  }
 }
 Dispath(A, path, G.n);
}
int main()
{
 MGraph G;
 G.CreateMGraph(G);
 G.Floyd(G);
}


vs2017里面是定位到第55行的代码k=path[i][j]这一行有错误

求问究竟是哪里出了错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值