菜鸡求助

沉蛋 2019-04-11 11:07:59
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int MaxVertexNum=100;
bool vis[MaxVertexNum];
typedef int Vertex;//顶点
typedef int WeightType;//权值
typedef char DataType;//顶点储存的数据结构
typedef struct ENode* PtrToENode;
struct ENode
{
Vertex V1,V2;
WeightType Weight;
};
typedef PtrToENode Edge;
typedef struct AdjVNode* PtrToAdjVNode;
struct AdjVNode
{
Vertex AdjV;
WeightType Weight;
PtrToAdjVNode Next;
};
//顶点表头结点的定义
typedef struct Vnode
{
PtrToAdjVNode FirstEdge;
DataType Data;
}AdjList[MaxVertexNum];
typedef struct GNode* PtrToGNode;
struct GNode
{
int Nv;
int Ne;
AdjList G;
};
typedef PtrToGNode LGraph;
LGraph CreateGraph(int VertexNum)
{
Vertex V;
LGraph Graph;
Graph=(LGraph)malloc(sizeof(struct GNode));
Graph->Nv=VertexNum;
Graph->Ne=0;
for(V=0;V<Graph->Nv;V++)
Graph->G[V].FirstEdge=NULL;
return Graph;
}
void InsertEdge(LGraph Graph,Edge E)
{
//有向图
PtrToAdjVNode NewNode;
NewNode=(PtrToAdjVNode)malloc(sizeof(struct AdjVNode));
NewNode->AdjV=E->V2;
NewNode->Weight=E->Weight;
NewNode->Next=Graph->G[E->V1].FirstEdge;
Graph->G[E->V1].FirstEdge=NewNode;
//无向图
NewNode=(PtrToAdjVNode)malloc(sizeof(struct AdjVNode));
NewNode->AdjV=E->V1;
NewNode->Weight=E->Weight;
NewNode->Next=Graph->G[E->V2].FirstEdge;
Graph->G[E->V2].FirstEdge=NewNode;
}
LGraph BuildGraph()
{
LGraph Graph;
Edge E;
int Nv,i;
scanf("%d",&Nv);
Graph=CreateGraph(Nv);
scanf("%d",&(Graph->Ne));
if(Graph->Ne!=0)
{
E=(Edge)malloc(sizeof(struct ENode));
for(i=0;i<Graph->Ne;i++)
{
scanf("%d%d%d",&E->V1,&E->V2,&E->Weight);
InsertEdge(Graph, E);
}
}
return Graph;
}
void Visit(Vertex V)
{
printf("正在访问顶点%d\n",V);
}
void DFS(LGraph Graph,Vertex V,void(*Visit)(Vertex))
{
PtrToAdjVNode W;//W为一个结构体
Visit(V);
vis[V]=true;
for(W=Graph->G[V].FirstEdge;W;W=W->Next)
if(!vis[W->AdjV])
DFS(Graph, W->AdjV, Visit);
return;
}
int main()
{
memset(vis, false, sizeof(vis));
LGraph graph=BuildGraph();
DFS(graph, 2, Visit);
return 0;
}
/*
8 9
1 2 1
1 4 1
1 5 1
2 3 1
3 4 1
5 6 1
6 7 1
7 8 1
8 5 1

这组测试数据,跑着跑着就奔溃了,但有时候又可以,真的很让菜鸡绝望,望大佬帮忙debug
*/
...全文
187 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
断点2019 2019-05-06
  • 打赏
  • 举报
回复
LGraph CreateGraph(int VertexNum)
{
Vertex V;
LGraph Graph;
Graph=(LGraph)malloc(sizeof(struct GNode));
memset(Graph->G, 0, sizeof(struct GNode));
Graph->Nv=VertexNum;
Graph->Ne=0;
for(V=0;V<Graph->Nv;V++)
Graph->G[V].FirstEdge=NULL;
return Graph;
}

memset一下吧
636f6c696e 2019-04-12
  • 打赏
  • 举报
回复
崩溃至少自己调试到哪一行啊?总不见得永远别人来帮你? 毕设、工作也要别人帮?

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧