доступ к узлам связанного списка с использованием двойных указателей
Я пытаюсь добавить узлы в связанный список, передавая указатель указателя, обращаясь к члену (*list) - > next дает ошибку сегментации. Может кто-то укажет на ошибку, заранее спасибо. Код -
void initializeList (node ** head, int data)
{
*head = malloc (sizeof (node));
(*head)-> member = data;
(*head)-> next = NULL;
}
void addNode(node ** list, int data)
{
node * newNode = NULL;
newNode = malloc (sizeof (node));
while (*list->next!= NULL)
{
*list= (*list) -> next;
}
newNode -> member = data;
newNode -> next = NULL;
(*list) -> next = newNode;
}
void main ()
{
node * head = NULL;
initializeList (&head, 5);
addNode(&head, 6);
}
2 ответа:
Не следует разыменовывать нулевой указатель,иначе, как и ожидалось, вы получите ошибку Seg.
Вот в чем проблема:
while (*list != NULL) { *list= (*list) -> next; } newNode -> member = data; newNode -> next = NULL; (*list) -> next = newNode;
*list
имеет значение NULL после цикла while.
И вы делаете(*list) -> next = newNode;