这是我的代码:
GraphBuilder.h
//#pragma once
#include<iostream>
#include<stdio.h>
#include<fstream>
#include <stdlib.h>
#include <string>
using namespace std;
#define MaxVertexNum 500000
struct Node{
int data;
struct Edge *next;
};
struct Edge{
int data;
int weight;
struct Edge* next;
};
class GraphBuilder
{
public:
GraphBuilder();
void CreateGraph();
void printGraph();
Node *header;
int total_of_nodes, total_of_edges;
private:
};
GraphBuilder.cpp
#include"GraphBuilder.h"
using namespace std;
GraphBuilder::GraphBuilder()
{
}
void GraphBuilder::CreateGraph()
{
int i,j,k;
int vex1, vex2, weight;
char a;
Edge *tmp, *newNode;
FILE *fp;
int line= -1;
fp = fopen("Text1.txt", "r");
if(fp == NULL)
{
cout<<"Cannot open file!\n";
return;
}
while(!feof(fp))
{
if(line == -1)
{
fscanf(fp, "%d %d", &total_of_nodes, &total_of_edges);
line++;
}
else break;
}
for(i=0;i<total_of_nodes;i++)
{
header[i].data = i;
header[i].next = NULL;
}
while(!feof(fp))
{
if(line == -1)
{
fscanf(fp, "%d %d", &total_of_nodes, &total_of_edges);
line++;
}
else
{
fscanf(fp, "%d %d %d", &vex1, &vex2, &weight);
newNode = (Edge *)malloc(sizeof(Edge));
newNode->data = vex2;
newNode->weight = weight;
newNode->next = NULL;
if (header[vex1].next == NULL)
header[vex1].next = newNode;
else
{
tmp = header[vex1].next;
header[vex1].next = newNode;
newNode->next = tmp;
}
}
}
}
void GraphBuilder::printGraph()
{
int i;
Edge* tmp;
for (i=0; i<total_of_nodes; i++)
{
cout<<header[i].data;
if (header[i].next != NULL)
{
tmp = header[i].next;
cout<<"->"<<tmp->data;
while (tmp->next != NULL)
{
cout<<"->"<<tmp->data;
}
}
cout<<endl;
}
}
主文件
#include"GraphBuilder.h"
using namespace std;
void main()
{
GraphBuilder gb;
gb.CreateGraph();
gb.printGraph();
}
我在VS2012上运行代码,总是弹出访问冲突发生的错误。不知道为什么会出现这个错误,我是C++的大一新生。请告诉我如何更正我的代码。谢谢你的帮助。