Salve a tutti, avrei un problema con le liste. Premetto che ho ripreso a programmare l'altro giorno in vista di un esame, ma ho iniziato ad avere problemi dove, fino a due mesi fa, non ne avevo: ho un problema con la creazione di liste per mezzo di funzioni. Praticamente, pur passando la lista ad una funzione tramite riferimento, alla fine della funzione la lista è vuota (anche se, effettivamente, nei vari passaggi della funzione vedevo la lista riempirsi tranquillamente). Allego il codice del programma, spero che qualcuno possa dirmi dove sbaglio o comuque quale sia il problema. P.S programmo in C con visual studio 2017, nel caso servisse saperlo.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct nodo {
int info;
struct nodo *next;
}tiponodo, *list;
list crealista();
list inserisciinlista(list *lista);
void stampalista(list lista);
int main() {
list lista;
lista = crealista();
inserisciinlista(&lista);
stampalista(lista);
}
list crealista() {
return NULL;
}
list inserisciinlista(list *lista) {
int dim, i = 0;
int a = 0;
list ultimo, aux;
printf("quanti numeri vuoi inserire?\n");
scanf("%d", &dim);
while (i < dim) {
if ((*lista) == NULL) {
aux = (tiponodo*)malloc(sizeof(tiponodo));
printf("inserisci numero\n");
scanf("%d", &aux->info);
aux->next = NULL;
lista = aux;
}
else {
ultimo = lista;
while (ultimo->next != NULL) {
ultimo = ultimo->next;
}
aux = (tiponodo*)malloc(sizeof(tiponodo));
printf("inserisci numero\n");
scanf("%d", &aux->info);
aux->next = NULL;
ultimo->next = aux;
ultimo = aux;
}
i++;
}
}
void stampalista(list lista) {
while ((&lista) != NULL) {
printf("%d\n", lista->info);
lista = lista->next;
}
}