Он делает то же самое, что и где-либо еще, он немедленно выходит из функции.
Если вы не вернетесь, вы продолжите выполнять функцию, но она не будет работать должным образом. Следующий блок кода:
while (last->next != NULL)
Если это if
было истиной, то last == NULL
(из-за инициализации last = *head)
. Этот код будет пытаться выполнить косвенный переход через нулевой указатель, что является неопределенным поведением.
Нет смысла выполнять остальную часть кода, который добавляет новый узел после последнего узла в списке. Список был пуст, поэтому нет последнего узла для добавления. Вы уже вставили его в качестве первого узла в блоке if
.
Кстати, if
- это не цикл. Цикл выполняет код повторно, и они пишутся с использованием for
и while
. if
является условным, он либо выполняет код один раз, либо не выполняет его вообще.