così a me va:
codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define MAX_LN 100
struct lista{
char carattere;
struct lista *next;
};
struct lista *StringToList(char *);
void stampalista(struct lista *);
int main(void){
char stringa[MAX_LN];
printf("Inserire una stringa: ");
fgets(stringa,MAX_LN,stdin);
stampalista(StringToList(stringa));
getch();
return 0;
}
struct lista *StringToList(char *s){
struct lista *head = NULL; // Crea il puntatore al primo nodo e impostalo a NULL
struct lista *a; // Puntatore a nodo generico
int i;
if(s[0] != '\0'){ // Se il primo carattere della stringa non è nullo
head = malloc(sizeof(struct lista)); // alloca memoria per il primo nodo della lista
head->carattere = s[0];
head->next = NULL;
a = head;
for(i=1; s[i] != '\0'; i++){
a->next = malloc(sizeof(struct lista));
a = a->next;
a->carattere = s[i];
}
}
a->next = NULL;
return(head);
}
void stampalista(struct lista *i){
int counter = 0;
while(i->next != NULL){
printf("%c", i->carattere);
i=i->next;
counter ++;
}//end while
printf("\nIl numero di nodi della lista corrisponde a: %d\n\n", counter);
}
poi si potrebbe fare di meglio eliminando l'if... però l'imp è che vada