求数据结构大神帮我看看程序!!谢谢!!!

来源:互联网 发布:天猫大数据分析报告 编辑:程序博客网 时间:2024/04/30 00:46

写了一个图的深度遍历  但是没有按照想象中出现结果  通过调试 发现没有进入递归函数DFS 求大神指教啊 万分感谢哭哭





#include<iostream>
using namespace std;
typedef struct arcNode{
int adj;
double weight;
struct arcNode *next;
}ArcNode;
typedef char Vtype;
struct VNode{
Vtype data;
ArcNode *first;
};
struct AGraph{
VNode *vertices;
int vnum;
int type;
};
bool insert(AGraph &G,int i,int j,double weight)
{
ArcNode *pi=(ArcNode*)malloc(sizeof(ArcNode));
ArcNode *pj=(ArcNode*)malloc(sizeof(ArcNode));
    if(!pi||!pj)
return false;
    pi->adj=j;
     pi->weight=weight;
pi->next=G.vertices[i].first;
G.vertices[i].first=pi;
return true;
}






void DFS(AGraph &G,int v)
{   
    bool *visited;
visited=(bool*)malloc(G.vnum*sizeof(bool));
visited[v]=true;
cout<<G.vertices[v].data<<" ";
for(ArcNode *p=G.vertices[v].first;p;p=p->next)
{     
int w=p->adj;
if(!visited[w])
  DFS(G,w);
}
}




void DFS(AGraph &G)
{    
    bool *visited;
visited=(bool*)malloc(G.vnum*sizeof(bool));
for(int i=0;i<G.vnum;i=i+1)
visited[i]=false;
for(i=0;i<G.vnum;i=i+1)
{ if(!visited[i])
DFS(G,i);
}


  free(visited);
  visited=false;
  }


bool output(AGraph &G)
{
for(int i=0;i<G.vnum;i=i+1)
{   
cout<<G.vertices[i].data;
ArcNode *p;
p=G.vertices[i].first;
while(p)
{
cout<<"("<<i<<","<<p->adj<<","<<p->weight<<")"<<" ";
p=p->next;
}
cout<<endl;
}
return true;
}


int main()
{
AGraph G;
cout<<"请输入顶点个数:"<<endl;
cin>>G.vnum;
G.vertices=(VNode*)malloc(G.vnum*sizeof(VNode));
int i;
for(i=0;i<G.vnum;i=i+1)
{   
G.vertices[i].first=0;
}
for(i=0;i<G.vnum;i=i+1)
{   
cout<<"请输入每个节点标记"<<endl;
cin>>G.vertices[i].data;
}
for(i=0;i<G.vnum;i=i+1)
{   
cout<<G.vertices[i].data<<" ";
}
getchar();
  cout<<"请输入相关数据"<<endl;
while(cin>>i)
{   int j,weigth;
cin>>j>>weigth;
   insert(G,i,j,weigth);
cout<<"请输入相关数据"<<endl;
    }
output(G);
 DFS(G);
  cout<<endl;
  return 1;
}

0 0
原创粉丝点击