分段故障实现链表

时间:2012-06-06 00:20:47

标签: c linked-list segmentation-fault

我有以下简单的代码但是它会引发分段错误。有人能指出我做错了吗?我输入第一个数字后出现分段错误。

    #include <stdio.h>
    #include <stdlib.h>

    struct linked_list {
        int val;
        struct linked_list *next;
    } *curr, *head;


    typedef struct linked_list list;

    void createLinkedList(int num);
    void main() {
        int i;

        head = NULL;
        int num = 0;
        for (i = 0; i < 10; i++) {
            printf("Enter a number:");
            scanf("%d", num);
            createLinkedList(num);
        }
        curr = head;

        while(curr) {
            printf("%d\n", curr->val);
            head = curr->next;
        }

    }

    void createLinkedList(int n) {

          curr = (list *)malloc(sizeof(list));
          curr->val = n;
          curr->next = head;
          head = curr;
    }

感谢。

1 个答案:

答案 0 :(得分:4)

您正在读取数字错误。 scanf获取一个指向整数的指针,因此它试图分配给内存位置0,这是无效的。使用&引用num的内存位置。

以下是更正后的版本:

scanf("%d", &num);