Если head
равно нулю, то эта функция выделяет новый Node
, но ничто не указывает на новый узел, поэтому он будет просочиться.
Если head
не равно нулю, ноявляется последним (то есть единственным) узлом списка, тогда p->next->data
косвенно обращается через нулевой указатель, и поведение программы не определено.
В противном случае, на первой итерации, p->next = temp; p = p->next;
делает p
будет таким же, как temp
, и во второй итерации p->next = temp;
заставляет узел указывать на себя, и цикл никогда не завершится.