Прежде чем добавить новый узел, сначала необходимо выполнить итерацию до конца связанного списка.
node *end(node *p){
// ...
node *next = p;
while(next->next){
next = next->next;
}
...
next->next = new;
return new; // Returns end of the linked list
}
Обратите внимание, что обычно следует проверить, имеет ли значение p
ноль, и, если это так, вернуть ошибку код или обработать ошибку в противном случае.