Проблема в том, что ваша текущая функция не может обновить указатель головы вызывающего абонента.
Возможно, ваш текущий вызывающий код имеет такой код:
Levels *head = NULL;
...
addToLevels(head, newLevel);
, и проблема в том, что после функциивызов, переменная head
по-прежнему NULL.
У вас есть два варианта получения head
обновлено.
1) Передайте головной узел как двойной указатель, чтобы он мог быть изменен внутрифункция:
void addToLevels(Levels** levels, Levels* newLevel){
if (*levels == NULL)
*levels = newLevel;
else {
и вызовите его следующим образом:
addToLevels(&head, newLevel);
2) Верните указатель уровня и всегда позволяйте вызывающему абоненту назначить его заголовку:
Levels* addToLevels(Levels* levels, Levels* newLevel){
if (!levels)
levels = newLevel;
else {
...
...
}
return levels;
}
и назовите это как:
head = addToLevels(head, newLevel);