Я создал двоичное дерево из нескольких разных предприятий. Каждый узел на дереве - это отдельный, уникальный бизнес. У каждого из этих предприятий может быть несколько мест. Эти местоположения хранятся в простом, отдельно связанном списке.Двоичное дерево и связанный список, удерживая головной узел в C
Моя проблема возникает при попытке добавить дополнительный узел местоположения в связанный список. Я передаю append расположение верхнего корня двоичного дерева, я хочу вернуть верхний корень к моей основной функции, за исключением добавления нового узла местоположения. Когда бизнес подтвержден, я выполняю эти функции. Мне нужно добавить, чтобы вернуть двоичное дерево, модифицированное, чтобы иметь другой узел местоположения, на одном из двоичных узлов.
BusinessNode *appendLocation(char * name, BusinessNode * root, FILE * LocPtr){
BusinessNode * temp = root;
LocationNode * newLoc = NULL;
newLoc = create_LocationNode(LocPtr);
temp = tree_search_name(name, root); //will return location where matching biz is found
temp->head = addLoc(root->head,newLoc);
printf("temp->head->next->LocPtr %ld", temp->head->next->LocPtr);
Segfault следующее место не получает добавил
return root; // somehow needs to return the whole modified binary tree
}
LocationNode * addLoc(LocationNode* root, LocationNode * newLoc){
if(root != NULL){
root -> next = addLoc(root->next, newLoc);
}
return root;
}
'addLoc' - это рекурсивная функция, которая абсолютно ничего не делает. – JS1