我似乎无法弄清楚为什么我会收到此错误。我运行valgrind,它说newNode =(NodeType *)malloc(sizeof(NodeType));正在创建错误,但我无法弄清楚为什么......基本上我要做的是初始化传入的大小为n的链表并将头设置为第一个节点。
typedef struct {
int number;
AnotherNodeType *anotherLinkedList;
} Type;
typedef struct Node{
Type *data;
struct Node *next;
} NodeType;
int main(){
NodeType *nodePointer = NULL;
initLinkedList(&nodePointer, 10);
return 0;
}
void initLinkedList(NodeType **nodePointer, int n){
int i;
NodeType *prevNode, *newNode;
prevNode = NULL;
for (i = 0; i < n; i++){
newNode = (NodeType *)malloc(sizeof(NodeType));
newNode->data = (Type *)malloc(sizeof(Type));
newNode->data->number = i;
newNode->data->anotherLinkedList = NULL;
if (prevNode == NULL){
*nodePointer = newNode;
}
else{
prevNode->next = newNode;
}
prevNode = newNode;
}
}
答案 0 :(得分:2)
您未在newNode->next
初始化initLinkedList
。
答案 1 :(得分:2)
如上所述@aib,您没有初始化列表中最后一项的“下一个”元素。
你应该在malloc之后将它初始化为null。
问题是:当你遍历你的列表时,当你到达最后一个项目时,它的“下一个”值将是未初始化的,你可能会结束segfaulting,你必须将它初始化为null才能知道你'已到达列表的末尾。