预期的声明说明符

时间:2014-04-24 16:37:45

标签: c list linked-list

我正在学习C中的链表。我是新手使用传递引用来操作链表。现在我知道我在这个程序中做了一些非常愚蠢的事情。该程序创建一个列表,然后基本上返回特定值的实例数(节点的数据)。我在每个main语句之前都会收到类似错误的“预期声明说明符”。

出现了什么问题?

#include<stdio.h>
    #include<malloc.h>
    struct list {
            int number;
            struct list *next;
            };
    typedef struct list node;
    void create(node *);
    int count(node **,int);
    main()
    int key,this_many;
    node *head;
    head = (node *)malloc(sizeof(node));
    create(head);
    printf("Which number?\n");
    scanf("%d",&key);
    this_many = count(&head,key);
    printf("%d times\n",this_many);
    return 0;
    }
    void create(node *list) {
            printf("Enter a number -999 to stop\n");
            scanf("%d",&list->number);
            if(list->number == -999) {
                    list->next = NULL;
            }
            else {
                    list->next = (node *)malloc(sizeof(node));
                    create(list->next);
            }
    }
    int count(node **addr_list,int key) {
            int count = 0;
            while(*addr_list != NULL) {
                    if((*addr_list)->number == key) {
                            count++;
                    }
                    *addr_list = (*addr_list)->next;
            }
            return(count);
    }

1 个答案:

答案 0 :(得分:0)

问题:

  1. 您没有指定main的返回类型。
  2. 您没有{开始main的范围。
  3. 将以main开头的行更改为:

    int main()
    {
      int key,this_many;
      node *head;
      head = (node *)malloc(sizeof(node));
      create(head);
      printf("Which number?\n");
      scanf("%d",&key);
      this_many = count(&head,key);
      printf("%d times\n",this_many);
      return 0;
    }