Unhandled exception in Graph.exe:0xC0000005:Access ViolationStatus CreateDN(MGraph *g,int flag) { int i,j; ArcNode *p; (*g).vexnum=G.vexnum; (*g).arcnum=G.arcnum; for(i=0;iAir.Distance; break; case 2: (*g).ar
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 14:46:39
Unhandled exception in Graph.exe:0xC0000005:Access ViolationStatus CreateDN(MGraph *g,int flag) { int i,j; ArcNode *p; (*g).vexnum=G.vexnum; (*g).arcnum=G.arcnum; for(i=0;iAir.Distance; break; case 2: (*g).ar
Unhandled exception in Graph.exe:0xC0000005:Access Violation
Status CreateDN(MGraph *g,int flag)
{
int i,j;
ArcNode *p;
(*g).vexnum=G.vexnum;
(*g).arcnum=G.arcnum;
for(i=0;iAir.Distance;
break;
case 2: (*g).arcs[i][j].adj=p->Train.TNum[Min(p->Train)].Expense;
break;
case 3: (*g).arcs[i][j].adj=p->Air.TNum[Min(p->Air)].Expense;
}
}
}
}
/* i=LocateVex(*G,va);
j=LocateVex(*G,vb);
(*G).arcs[i][j].adj=w; */
for(i=0;i
Unhandled exception in Graph.exe:0xC0000005:Access ViolationStatus CreateDN(MGraph *g,int flag) { int i,j; ArcNode *p; (*g).vexnum=G.vexnum; (*g).arcnum=G.arcnum; for(i=0;iAir.Distance; break; case 2: (*g).ar
简单看了下,程序风格还不错,只是看得出来,你比较害怕使用指针阿,我看了下提几个建议:对你可能会有帮助:
第一:函数参数要检查,尤其是指针参数,必须检查,否则就容易出现你现在的问题了:0xC0000005:Access Violation (使用指针之前一定要检查它是否为空)
比如说你的Status CreateDN(MGraph *g,int flag)
第一件事,检查下你传入的参数是否合法,可以这样
{
if (g == NULL) return;
}
还有一个问题,你(*g).vexnum这个用法比较别扭,直接用g->vexnum就可以了.这反映出你比较怕指针
第二:malloc了一块内存,注意free.
你可以看下林锐博士写的,对你有很大帮助.
因为第二次循坏p=p->nextarc了,那可能p->nextarc指向的内存你没有控制好,可能是不能读写的.你可以调式看这个地址里面的内容阿,是否是你所要的东西.