繁体   English   中英

分段错误 11,C

[英]Segmentation Fault 11, C

我一直在尝试在 C 中实现LinkedList以实际实现我在 C 中学到的理论。我不断收到Segmentation fault: 11.任何有关如何解决此问题的帮助将不胜感激。 这是我的代码:

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

struct Element {
    int value;
    struct Element *nextElement;
};

struct LinkedList {
    struct Element *firstElement;   
};

void add(struct LinkedList *list, int value) {
    if(list->firstElement == NULL) {
        struct Element *newElement;
        newElement = malloc(sizeof(struct Element));

        newElement->value = value;

        list->firstElement = newElement;
    } else {
        struct Element *lastElement;

        lastElement = list->firstElement;

        while(lastElement->nextElement != NULL) {
            lastElement = lastElement->nextElement;   
        }

        struct Element *newElement;
        newElement = malloc(sizeof(struct Element));

        newElement->value = value;

        lastElement->nextElement = newElement;
    }
}

void showAllElements(struct LinkedList *list) {
    struct Element *lastElement = list->firstElement;

    while(lastElement != NULL) {
        printf("%d\n", lastElement->value);
        lastElement = lastElement->nextElement;
    }
}

int main()
{
    struct LinkedList list;
    add(&list, 5);
    add(&list, 10);
    add(&list, 15);
    showAllElements(&list);

    return 0;   
}

所以,你的代码有几个问题。 struct LinkedList list未分配。 当你执行list->firstElement时它会list->firstElement 初始化它

struct LinkedList list = {NULL}

此外newElement不分配nextElement 您还需要将其设置为NULL ,否则该访问会出错。

    struct Element *newElement;
    newElement = malloc(sizeof(struct Element));

    newElement->value = value;
    newElement->nextElement = NULL;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM