当前,我正在尝试读取图形的数字。我使用向量数组,因为我知道我使用的顶点数量。因此,文本文件如下所示:
1 2 3 4
2 1
3 1
4 1
所以我的打印功能可以正常工作,我正在尝试像这样打印它:
Adjacency list of vertex 0
head
Adjacency list of vertex 1
head -> 2-> 3-> 4
Adjacency list of vertex 2
head -> 1
Adjacency list of vertex 3
head -> 1
Adjacency list of vertex 4
head -> 1
但它并不止于此。如果我在末尾添加printf("%d", number);
,它将在出现段错误的任何问题之前停止(我知道它是C,但是我误用了它,并注意到它在做任何错误之前就已经停止了。
这是我的主要爱好:
int main()
{
int V = 5;
vector<int> adj[V];
FILE *file = fopen("bfs1.txt", "r");
if(file == 0){
cout << "ERROR: file does not exist" << endl;
return -1;
}
else {
int x;
fscanf(file, "%d", &x);
int indexChange = 1;
while(!feof(file)) {
int c = getc(file);
int number = c - '0';
//to ignore spaces
if (number == -16 ){
continue;
}
//NewLine so increase vertex index
if (number == -38){
indexChange = indexChange + 1;
continue;
}
//End of file
if (number == -49){
printGraph(adj,V);
break;
}
addEdge(adj, indexChange, number);
printGraph(adj,V);
//printf("%d\n", number);
}
}
return 0;
}
有了此更改,它对我有用,但我不知道它为什么起作用。
if (number == -38){
indexChange = indexChange + 1;
break;
}