代码之家  ›  专栏  ›  技术社区  ›  Anthony

错误:“struct”之前应有表达式,在生成链表时

  •  1
  • Anthony  · 技术社区  · 7 年前

    malloc() 一个新节点。我已经考虑过类似的问题,并试图修复我的代码,但我无法让它工作。任何帮助都将不胜感激。

    #include <stdio.h>
    #include <stdlib.h>
    
    struct List {
        int x;
        struct List *next;
    };
    
    int main() {
        struct List* head = (struct List*)malloc(sizof(struct List));
        if (head == NULL) {
            return 1;
        }
    
        head->x = 1;
        head->next = (struct List*)malloc(sizof(struct List));
        head->next->x = 2;
        head->next->next = NULL;
    
        struct List* current = head;
        while(current != NULL) {
            printf("%d", current->x);
            current = current->next;
        }
        return 0;
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Vlad from Moscow    7 年前

    像这样的语句中有一个拼写错误

    struct List* head = (struct List*)malloc(sizof(struct List));
                                             ^^^^^
    

    一定有

    struct List* head = (struct List*)malloc(sizeof(struct List));
                                             ^^^^^^
    

    考虑到根据C标准,无参数的函数main应声明如下

    int main( void )
    

    在退出程序之前,您应该释放列表的所有分配内存。