c - 错误:预期的声明说明符或“...”
问题描述
我想使用这段代码来编译和运行一个简单的呼吸优先搜索算法,但我在所有 addVertex 和 addEdge 函数上都有这个错误消息。
不知道发生了什么。
main.c:120:14: 错误:预期的声明说明符或 '...' 在 'S' addVertex('S'); // 0
这是完整的C代码
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX 5
struct Vertex {
char label;
bool visited;
};
//stack variables
int stack[MAX];
int top = -1;
//graph variables
//array of vertices
struct Vertex* lstVertices[MAX];
//adjacency matrix
int adjMatrix[MAX][MAX];
//vertex count
int vertexCount = 0;
//stack functions
void push(int item) {
stack[++top] = item;
}
int pop() {
return stack[top--];
}
int peek() {
return stack[top];
}
bool isStackEmpty() {
return top == -1;
}
//graph functions
//add vertex to the vertex list
void addVertex(char label) {
struct Vertex* vertex = (struct Vertex*) malloc(sizeof(struct Vertex));
vertex->label = label;
vertex->visited = false;
lstVertices[vertexCount++] = vertex;
}
//add edge to edge array
void addEdge(int start,int end) {
adjMatrix[start][end] = 1;
adjMatrix[end][start] = 1;
}
//display the vertex
void displayVertex(int vertexIndex) {
printf("%c ",lstVertices[vertexIndex]->label);
}
//get the adjacent unvisited vertex
int getAdjUnvisitedVertex(int vertexIndex) {
int i;
for(i = 0; i < vertexCount; i++) {
if(adjMatrix[vertexIndex][i] == 1 && lstVertices[i]->visited == false) {
return i;
}
}
return -1;
}
void depthFirstSearch() {
int i;
//mark first node as visited
lstVertices[0]->visited = true;
//display the vertex
displayVertex(0);
//push vertex index in stack
push(0);
while(!isStackEmpty()) {
//get the unvisited vertex of vertex which is at top of the stack
int unvisitedVertex = getAdjUnvisitedVertex(peek());
//no adjacent vertex found
if(unvisitedVertex == -1) {
pop();
} else {
lstVertices[unvisitedVertex]->visited = true;
displayVertex(unvisitedVertex);
push(unvisitedVertex);
}
}
//stack is empty, search is complete, reset the visited flag
for(i = 0;i < vertexCount;i++) {
lstVertices[i]->visited = false;
}
}
int main() {
int i, j;
for(i = 0; i < MAX; i++) // set adjacency {
for(j = 0; j < MAX; j++) // matrix to 0
adjMatrix[i][j] = 0;
}
addVertex('S'); // 0
addVertex('A'); // 1
addVertex('B'); // 2
addVertex('C'); // 3
addVertex('D'); // 4
addEdge(0, 1); // S - A
addEdge(0, 2); // S - B
addEdge(0, 3); // S - C
addEdge(1, 4); // A - D
addEdge(2, 4); // B - D
addEdge(3, 4); // C - D
printf("Depth First Search: ")
depthFirstSearch();
return 0;
}
解决方案
你有两个问题:
- 一个{
落后于//
- 一个;
缺失
int main() {
int i, j;
for(i = 0; i < MAX; i++){ // set adjacency (problem with braces !!)
for(j = 0; j < MAX; j++) // matrix to 0
adjMatrix[i][j] = 0;
}
addVertex('S'); // 0
addVertex('A'); // 1
addVertex('B'); // 2
addVertex('C'); // 3
addVertex('D'); // 4
addEdge(0, 1); // S - A
addEdge(0, 2); // S - B
addEdge(0, 3); // S - C
addEdge(1, 4); // A - D
addEdge(2, 4); // B - D
addEdge(3, 4); // C - D
printf("Depth First Search: "); //here ; is missing
depthFirstSearch();
return 0;
}
推荐阅读
- python - 权限被拒绝:升级 matplotlib 时出现 INSTALLER.c 错误
- chainlink - Chainlink 节点错误:用户“root”的密码认证失败
- html - vs代码中的CSS问题
- vue.js - 为什么这个列表渲染在 Vue 3 中不起作用?
- javascript - Iro.js 重置 React 状态
- python-3.x - Python 3.9.5 中的 Imghdr 模块错误识别 .png 文件
- automated-tests - Robot Framework -SSHLibrary - 文件应该存在
- facebook - ids_for_pages api 在使用页面访问令牌瞄准时返回空数据
- css - 使用 transform: scale 和 transform: origin 后,如何将此 iframe 居中在其父级内?
- java - 在 TextView 中设置文本取决于 AutoCompleteTextView 中的选定项