获得错误:预期'{'之前'('令牌

时间:2016-05-14 08:00:01

标签: c algorithm

我参加了斯坦福大学的算法第一部分课程,我正在尝试在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)

2 个答案:

答案 0 :(得分:8)

unionreserved keyword,您不能将其用作标识符。

答案 1 :(得分:3)

注意额外的{

void union{(int a, int b,int *p)
          ^

注意:此答案是在OP编辑问题之前发布的,用于删除拼写错误(本回答中提到)。检查edits是否清晰。

另一个注意: 使用main()

的标准定义
int main(void) //if no command line arguments.