Salve, ho realizzato questo programma funzionante sulle liste:
#include <stdio.h>
#include <stdlib.h>
typedef struct Nodo{
int dato;
struct Nodo *prox;
}Nodo;
typedef Nodo *Lista;
Lista Inizializza();
//funzione che inizializza una lista ponendola uguale a NULL
Lista InserimentoInTesta(Lista l, int e);
//funzione che inserisce in testa alla lista (prima posizione) un nuovo nodo di dati "e"
void StampaLista(Lista l);
//stampa a video il contenuto di una lista
int main(void){
Lista l;
int a = 1;
int b = 2;
int c = 3;
int d = 4;
l = Inizializza();
printf("Inserimento in testa:\n");
l = InserimentoInTesta(l, a);
l = InserimentoInTesta(l, b);
l = InserimentoInTesta(l, c);
l = InserimentoInTesta(l, d);
StampaLista(l);
system("pause");
return 0;
}
Lista Inizializza(){
return NULL;
}
Lista InserimentoInTesta(Lista l, int e){
//creo un nodo, lo alloco, inserisco il dato e lo faccio puntare al primo nodo della lista
//in questo modo il nuovo nodo è adesso il primo elemento
Nodo *temp;
temp = malloc (sizeof(Nodo));
temp->dato = e;
temp->prox = l;
return temp;
}
void StampaLista(Lista l){
Nodo *puntcorrente = l;
while (puntcorrente != NULL){
printf("elemento corrente> %d\n",puntcorrente->dato);
puntcorrente = puntcorrente->prox;
}
}
Però non ho ben capito come fa a funzionare, in quanto nella stampa vado a creare la variabile locale Nodo *puntcorrente, e non capisco come faccia a puntare al nodo successivo attraverso l'assegnazione puntcorrente = puntcorrente->prox;
prox che valore assume?
Grazie.