pengtianshi999 2019-03-21 23:13 采纳率: 50%
浏览 322

dijkstra算法过程中的问题

int dejie(ALGraph G,int i,int j)
{
ArcNode *p;
int v,x,m,start,k,w,y,o;
int D[8],M[8];

p=(ArcNode*)malloc(sizeof(ArcNode));
for(v=0;v<8;v++)
D[v]=10000;
for(x=0;x<8;x++)
M[x]=0;

start=i;
M[0]=1; 
k=G.vertices[i].firstarc->lang;
D[G.vertices[i].firstarc->adjvex]=k;
p=G.vertices[i].firstarc;
M[G.vertices[i].firstarc->adjvex]=1;

for(o=NextAdjVex(G,aaa(i),aaa(G.vertices[i].firstarc->adjvex));o;o=NextAdjVex(G,aaa(i),aaa(o)))
{
    p=p->nextarc;
  D[o]=p->lang;
  M[o]=1;
}
//for(m=1;m<7;m++)
for(w=0;w<7;w++)//===================
{
  if(D[w]<10000&&M[w]==0)
  {

    start=w;
    k=G.vertices[start].firstarc->lang;
    D[G.vertices[start].firstarc->adjvex]=D[start]+k;
    p=G.vertices[start].firstarc;
    M[G.vertices[start].firstarc->adjvex]=1;
  for(y=NextAdjVex(G,aaa(start),aaa(G.vertices[start].firstarc->adjvex));y;y=NextAdjVex(G,aaa(start),aaa(y)))
  {
    p=p->nextarc;
    D[y]=p->lang;
    M[y]=1;
  } 
  }
}

return 1;

}
在for(w=0;w 调试时w显示的是4199049地址,而不是0这是为什么,而且return 1失效;但把
for(o=NextAdjVex(G,aaa(i),aaa(G.vertices[i].firstarc->adjvex));o;o=NextAdjVex(G,aaa(i),aaa(o)))
{
p=p->nextarc;
D[o]=p->lang;
M[o]=1;
}
这行代码去掉ruturn 1就有显示了

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:18
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。