我参加了斯坦福大学的算法第一部分课程,我正在尝试在c中实现快速查找算法。 下面是我实现快速查找的代码。
#include <stdio.h>
#include <stdlib.h>
#define n 10
void union (int, int, int *);
void connected(int, int, int *);
int main(){
//initializing array value to it's index value
int i;
int id[n];
for(i = 0 ; i < n;i++)
{
id[i] = i;
}
union(0,5,id);
union(3,4,id);
union(5,8,id);
connected(3,4,id);
connected(0,8,id);
}
void union(int a, int b,int *p)
{
int x, y;
x = p[b];
y= p[a];
for(int i = 0; i < n; i++)
{
if (p[i]==y)
p[i] = x;
}
}
void connected(int a, int b,int *p)
{
if(p[a]==p[b])
printf("connected");
else
printf("not connected");
}
每当我编译程序时,都会生成以下错误。
我已经检查了我的函数原型和声明,但我无法找到问题。
quick_find.c:4:12: error: expected ‘{’ before ‘(’ token
void union (int, int, int *);
^
quick_find.c:4:6: error: two or more data types in declaration specifiers
void union (int, int, int *);
^
quick_find.c: In function ‘main’:
quick_find.c:15:7: error: expected ‘{’ before ‘(’ token
union(0,5,id);
^
quick_find.c:16:7: error: expected ‘{’ before ‘(’ token
union(3,4,id);
^
quick_find.c:17:7: error: expected ‘{’ before ‘(’ token
union(5,8,id);
^
quick_find.c: At top level:
quick_find.c:23:11: error: expected ‘{’ before ‘(’ token
void union(int a, int b,int *p)
^
quick_find.c:23:6: error: two or more data types in declaration specifiers
void union(int a, int b,int *p)
答案 0 :(得分:8)
union
是reserved keyword,您不能将其用作标识符。
答案 1 :(得分:3)
注意额外的{
void union{(int a, int b,int *p)
^
注意:此答案是在OP编辑问题之前发布的,用于删除拼写错误(本回答中提到)。检查edits是否清晰。
另一个注意:
使用main()
int main(void) //if no command line arguments.