Что вы здесь делаете, передаете указатель на функцию и размещаете его в функции (локально), и вы хотите, чтобы этот локальный указатель был доступен и повторно использовался вне области действия функции.Вы видите проблему?
Выделение переданной головы (копирование при передаче) в области действия функции повлияет на область действия функции.Что вы можете сделать, это передать этот указатель по ссылке.Таким образом, ваш код изменится так:
struct stud {
string stud_name;
string stud_roll;
stud *next_node;
};
void addNode(stud *&head);
int main()
{
stud *head = nullptr;
addNode(head);
addNode(head);
addNode(head);
addNode(head);
addNode(head);
}
void addNode(stud *&head)
{
stud *new_node = new stud;
new_node->next_node = NULL;
if (head == NULL)
{
head = new_node;
cout << "Head node Created" << endl;
}
else
{
stud *temp_head = NULL;
temp_head = head;
while (temp_head->next_node != NULL)
{
temp_head = temp_head->next_node;
cout << "Moving temp pointer" << endl;
}
temp_head->next_node = new_node;
cout << "Body node created" << endl;
}
}