Data_Structure_ 2021-12-11 23:07 采纳率: 54.5%
浏览 63
已结题

在用邻接表存储的有向图G,利用深度优先算法判断结点i到j之间是否存在路径,存在输出1,否返回0

问题遇到的现象和发生背景

自己的代码写出来了,但是运行的结果是错的,我反复看死活看不出哪里错的
题目具体是这个

img

问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std; 

#define mvnum 100
typedef struct arcnode{
    int adjvex;
    struct arcnode *nextarc;
}arcnode;
typedef struct vnode{
    int data;
    struct arcnode* firstarc;
}vnode,adjlist[mvnum];
typedef struct{
    adjlist vertices;
    int vexnum,arcnum;
}algraph;

int visited[mvnum];
int level =1; 

void create(algraph &g)
{cin>>g.vexnum>>g.arcnum;
int i,j,k,m;
for(i=1;i<=g.vexnum;++i)
{cin>>g.vertices[i].data;
g.vertices[i].firstarc=NULL;}
for(k=1;k<=g.arcnum;k++)
{
cin>>m>>j;
arcnode *p;
p=new arcnode;
p->adjvex=j;
p->nextarc =g.vertices[m].firstarc;
g.vertices[m].firstarc=p;
}
}

bool exist_path(algraph G,int i,int j)
{ int k;
  arcnode *p;
  if(i==j) return 1; 
  else 
  { 
    visited[i]=1; 
    for(p=G.vertices[i].firstarc;p;p=p->nextarc,level--) 
    { level++;
      k=p->adjvex; 
      if(!visited[k]&&exist_path(G,k,j)) return true;
}
  }
if (level==1)  return false;
}

int main(){
algraph g;
int i,j;
create(g);
cin>>i>>j;
cout<<exist_path(g,i,j);
return 0;    
}

运行结果及报错内容

img

我想要达到的结

存在路径输出1,不存在输出0

  • 写回答

1条回答 默认 最新

  • HH123_3 2021-12-11 23:37
    关注

    你输入写的都不对啊

    for(i=1;i<=g.vexnum;++i)
    {cin>>g.vertices[i].data;
    g.vertices[i].firstarc=NULL;}
    

    有这个输入么?
    你visit要恢复现场

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月5日
  • 创建了问题 12月11日

悬赏问题

  • ¥20 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏