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?
Graziecodice:#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); }
Andrea

Rispondi quotando