代码如下:
#include <cstdio>
#include <iostream>
#include <deque>
struct vertex {
bool visited;
int value;
int distance;
};
int main() {
int key_value;
std::cin >> key_value;
int num_vertices;
std::cin >> num_vertices;
int** matrix;
matrix = new int*[num_vertices];
for (int i = 0; i < num_vertices; i++) {
matrix[i] = new int[num_vertices];
}
vertex* vertices;
vertices = new vertex[num_vertices];
std::deque<vertex> queue;
int vertex, value;
while(std::cin >> vertex >> value) {
vertices[vertex].value = value;
int num_edges;
std::cin >> num_edges;
for(int i = 0; i < num_edges; i++) {
int edge_to;
std::cin >> edge_to;
matrix[vertex][edge_to] = 1;
}
}
//BFS
vertices[0].visited = true;
vertices[0].distance = 0;
queue.push_back(vertices[0]);
while(!queue.empty()) {
vertex cur_v;
cur_v = queue.front();
queue.pop_front();
for(int i = 1; i < num_vertices; i++) {
if(matrix[cur_v, i]) {
if(!vertices[i].visited) {
vertices[i].visited = true;
queue.push_back(vertices[i]);
}
}
}
}
return(0);
}
我收到以下错误,
search_gilene_matt.cc:在函数'int main()'中: search_gilene_matt.cc:42:错误:预期';'在'cur_v'之前 search_gilene_matt.cc:43:错误:'cur_v'未在此范围内声明
有人可以了解导致这种情况的原因吗?
我找了一个丢失的分号,但我不知道它会在哪里。
答案 0 :(得分:5)
您似乎宣布int vertex
隐藏了您的struct vertex
。重命名int并且你很好。
答案 1 :(得分:3)
当你写:
int vertex, value;
然后vertex
成为变量的名称,只要该变量在范围内。
后来你写道:
vertex cur_v;
失败,因为vertex
是变量的名称。
要解决此问题,请将您的变量命名为不同的名称,或使用struct vertex
来引用该类型。