gpt4 book ai didi

c - 段错误 11,C

转载 作者:行者123 更新时间:2023-11-30 21:09:46 25 4
gpt4 key购买 nike

我一直在尝试用 C 语言实现一个 LinkedList 来实际实现我在 C 语言中学到的理论。我不断收到 Segmentation failure: 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 时,它会出错。初始化它

struct LinkedList list = {NULL}

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

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

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

关于c - 段错误 11,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33591729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com