[英]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.