Во-первых, неправильно указывать указатели. Посмотрите на эту ветку для лучшего обсуждения.
Чтобы изменить заголовок вашего связанного списка, вы должны передать его по ссылке, а затем изменить его внутри функции. Для лучшей визуализации я проигнорировал typedef.
// Notice that now you need to pass a pointer to a pointer, not just a pointer
void InsertFront(struct nodes **head)
{
int num;
struct nodes *temp = malloc(sizeof(node));
printf("Enter The Value Of Node\n");
scanf("%d", &num);
temp->data = num;
if (*head == NULL)
{
temp->next = NULL;
// by doing *head = temp we change the variable head declared in main
*head = temp;
}
else
{
temp->next = *head;
// Same thing here, we are updating the head by doing *head = ...
*head = temp;
}
}
И когда вы хотите вызвать функцию InsertFront
:
struct nodes *head = NULL;
InsertFront(&head); // notice the &