2014-04-24 203 views
1

我正在學習C中的鏈接列表。我是使用傳遞引用來處理鏈接列表的新手。現在我知道我在這個程序中做了一些非常愚蠢的事情。這個程序創建一個列表,然後基本上返回一個特定值的實例數(節點的數據)。在每次main!語句之前,我會收到一個像這樣的錯誤,「Expected declaration specifier」。預期聲明說明符

這是怎麼回事?

#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); 
    } 
+0

我覺得你的括號不均衡?你能否將代碼格式化得更好一些? – demongolem

+2

我沒有看到'main()'的開始括號'{' – brokenfoot

+0

omg ..感謝一個非常愚蠢的錯誤,它確實現在完美運行。 – tofu

回答

0

問題:

  1. 您還沒有指定的main返回類型。
  2. 您沒有{來啓動main的範圍。

變化的線條開始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; 
}