C'è un problema nella funzione (void inserisci_dopo_nodo(int v, NODOPTR* lista)) e non riesco a capire il perchè...infatti se nel main non eseguo la funzione testa_lista=inizializza(3) prima di inserisci_dopo_nodo non mi stampa a schermo nulla...pero nella funzione ho gestito il caso del NODOPTR testa_lista NULL.
#include <stdio.h>
#include <stdlib.h>
struct nodo
{
int numero;
struct nodo* next;
};
typedef struct nodo NODO;
typedef NODO* NODOPTR;
NODOPTR inizializza(int v)
{
NODOPTR n = (NODOPTR)malloc(sizeof(NODO));
if(n==NULL)
{
perror("malloc");
exit(EXIT_FAILURE);
}
n->numero = v;
n->next = NULL;
return n;
}
void inserisci_prima_nodo(int v,NODOPTR* lista)
{
NODOPTR primo;
NODOPTR nuovo=inizializza(v);
primo=*lista;
//inserisci in testa
nuovo->next=primo;
primo=nuovo;
}
void inserisci_dopo_nodo(int v, NODOPTR* lista)
{
NODOPTR primo;
NODOPTR nuovo=inizializza(v);
primo=*lista;
if(primo==NULL){
primo=nuovo;
}
else{
NODOPTR temp = primo;
while((temp->next)!=NULL)
{
temp=temp->next;
}
temp->next=nuovo;
}}
void stampa(NODOPTR* lista)
{
NODOPTR temp = *lista;
while(temp!=NULL)
{
printf("%d\n",temp->numero);
temp=temp->next;
}
}
int main()
{
NODOPTR testa_lista=NULL;
// testa_lista=inizializza(3);
inserisci_dopo_nodo(1,&testa_lista);
inserisci_dopo_nodo(2,&testa_lista);
stampa(&testa_lista);
return 0;
}