为什么老是有内存错误,感觉没问题啊
程序代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 3276 int main(void) { int count,i,j,k,n1,n2,weight,n,e,mindist; int vex[n],edge[n][n]; int dist[n],prev[n],s[n]; clock_t start,end; for(count=0;count<10;count++) { printf("请输入顶点数和边数,中间用空格隔开:"); scanf("%d%d",&n,&e); //邻接矩阵的初始化: for(i=0;i<n;i++) { vex[i]=i; } for(i=0;i<n;i++) { for(j=0;j<n;j++) edge[i][j]=MAX; //显示这行造成内存错误 } srand((unsigned)time(NULL)); for(k=0;k<e;k++) { n1=rand()%n; n2=rand()%n; weight=rand()%100+1; edge[n1][n2]=weight; } //完成初始化 start=clock(); //开始Dijkstra算法 for(i=0;i<n;i++) { dist[i]=edge[0][i]; s[i]=0; if(dist[i]==MAX) prev[i]=-1; else prev[i]=0; } s[0]=1; dist[0]=0; for(i=0;i<n;i++) { mindist=MAX; for(j=0;j<n;j++) { if(s[j]==0&&dist[j]<mindist) { mindist=dist[j]; k=j; } } s[k]=1; for(j=0;j<n;j++) { if(s[j]==0&&dist[j]>dist[k]+edge[k][j]) { dist[j]=dist[k]+edge[k][j]; prev[j]=k; } } } //输出起始点到各个点的最短距离: for(i=0;i<n;i++) { printf("起始点到点%d的最短距离为%d\n",i,dist[i]); } //Dijkstra算法完成。 end=clock(); printf("当顶点数为%d时,所用的时间为%d毫秒。\n",n,end-start); } }