Ciao,
devo scrivere un programma che fà le seguenti cose:
immessa una stringa con una funzione mette in una lista ogni carattere della stringa fino alla fine della stringa.
Poi con un'altra funzione stampa i caratteri cntenuti nel membro apposito di ogni nodo e stampa di quanti nodi è formata la stringa....la prima funzione dovrebbe funzionare correttamente...la seconda sbrocca....come mai?
codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct lista{
char carattere;
struct lista *next;
};
struct lista *StringToList(char *);
void stampalista(struct lista *);
int main(){
char stringa[100];
struct lista *head;
printf("Inserire una stringa: ");
scanf("%s", stringa);
head = StringToList(stringa);
stampalista(head);
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->carattere = s[i];
a = a->next;
}
}
a->next = NULL;
return(head);
}
void stampalista(struct lista *i){
int counter = 0;
while(i->next != '\0'){
printf("%c", i->carattere);
counter ++;
}
printf("\nIl numero di nodi della lista corrisponde a: %d\n\n", counter);
}
Grazie
Andrea