23/05/11 17:19
ElCobra91
ciao stavo facendo un esercizio che dice: si consideri la seguente struttura
si realizzi una funzione ch,ricevuta in ingresso una stringa contenente parole separate esattamente da uno spazio,crei una lista i cui nodi contengano le parole della stringa passata e ne restituisca la testa.
Il mio codice è questo
In pratica se inserisco una stringa di lunghezza 10 come "ciao mamma" dovrebbe creare due nodi uno con ciao e poi uno con mamma e poi dovrebbe stampare" mamma ciao" perchè inserisco in testa ogni nodo ma non succede nulla.Potete dirmi dove posso aver sbagliato?
typedef struct Nodo{ char *str; struct Nodo* next; }nodo;
si realizzi una funzione ch,ricevuta in ingresso una stringa contenente parole separate esattamente da uno spazio,crei una lista i cui nodi contengano le parole della stringa passata e ne restituisca la testa.
Il mio codice è questo
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> typedef struct Nodo{ char *str; struct Nodo *next; }nodo; nodo *creaLista(char *); void stampaLista(nodo *); int main(int argc, char *argv[]) { nodo *first; char *string; int dim; first = NULL; printf("Inserisci l dimensione della tua stringa\n"); scanf("%d",&dim); while(dim!=0){ string=(char *)malloc(sizeof(char)*dim + 1); printf("Inserisci la stringa "); gets(string); first=creaLista(string); printf("Inserisci la dimensione della tua stringa"); scanf("%d",&dim); } stampaLista(first); return 0; } nodo *creaLista(char *s) { nodo *testa; nodo *nuovo; int i,j,k; testa=NULL; for(i=0,j=0;s[i]!='ciao stavo facendo un esercizio che dice: si consideri la seguente strutturatypedef struct Nodo{ char *str; struct Nodo* next; }nodo;
si realizzi una funzione ch,ricevuta in ingresso una stringa contenente parole separate esattamente da uno spazio,crei una lista i cui nodi contengano le parole della stringa passata e ne restituisca la testa.
Il mio codice è questo#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> typedef struct Nodo{ char *str; struct Nodo *next; }nodo; nodo *creaLista(char *); void stampaLista(nodo *); int main(int argc, char *argv[]) { nodo *first; char *string; int dim; first = NULL; printf("Inserisci l dimensione della tua stringa\n"); scanf("%d",&dim); while(dim!=0){ string=(char *)malloc(sizeof(char)*dim + 1); printf("Inserisci la stringa "); gets(string); first=creaLista(string); printf("Inserisci la dimensione della tua stringa"); scanf("%d",&dim); } stampaLista(first); return 0; } nodo *creaLista(char *s) { nodo *testa; nodo *nuovo; int i,j,k; testa=NULL; for(i=0,j=0;s[i]!='{parsed_message}';i++){ if(s[i]==' '){ nuovo=(nodo *)malloc(sizeof(nodo)); nuovo->str=malloc(sizeof(char)*(i-j)); for(k=0;j<i;j++,k++) nuovo->str[k]=s[j]; nuovo->str[j]='{parsed_message}'; nuovo->next=testa; testa=nuovo; } } return testa; } void stampaLista(nodo *testa) { nodo *tmp; for(tmp=testa;tmp!=NULL;tmp=tmp->next) printf("%s",tmp->str); return; }
In pratica se inserisco una stringa di lunghezza 10 come "ciao mamma" dovrebbe creare due nodi uno con ciao e poi uno con mamma e poi dovrebbe stampare" mamma ciao" perchè inserisco in testa ogni nodo ma non succede nulla.Potete dirmi dove posso aver sbagliato?
';i++){ if(s[i]==' '){ nuovo=(nodo *)malloc(sizeof(nodo)); nuovo->str=malloc(sizeof(char)*(i-j)); for(k=0;j<i;j++,k++) nuovo->str[k]=s[j]; nuovo->str[j]='ciao stavo facendo un esercizio che dice: si consideri la seguente strutturatypedef struct Nodo{ char *str; struct Nodo* next; }nodo;
si realizzi una funzione ch,ricevuta in ingresso una stringa contenente parole separate esattamente da uno spazio,crei una lista i cui nodi contengano le parole della stringa passata e ne restituisca la testa.
Il mio codice è questo#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> typedef struct Nodo{ char *str; struct Nodo *next; }nodo; nodo *creaLista(char *); void stampaLista(nodo *); int main(int argc, char *argv[]) { nodo *first; char *string; int dim; first = NULL; printf("Inserisci l dimensione della tua stringa\n"); scanf("%d",&dim); while(dim!=0){ string=(char *)malloc(sizeof(char)*dim + 1); printf("Inserisci la stringa "); gets(string); first=creaLista(string); printf("Inserisci la dimensione della tua stringa"); scanf("%d",&dim); } stampaLista(first); return 0; } nodo *creaLista(char *s) { nodo *testa; nodo *nuovo; int i,j,k; testa=NULL; for(i=0,j=0;s[i]!='{parsed_message}';i++){ if(s[i]==' '){ nuovo=(nodo *)malloc(sizeof(nodo)); nuovo->str=malloc(sizeof(char)*(i-j)); for(k=0;j<i;j++,k++) nuovo->str[k]=s[j]; nuovo->str[j]='{parsed_message}'; nuovo->next=testa; testa=nuovo; } } return testa; } void stampaLista(nodo *testa) { nodo *tmp; for(tmp=testa;tmp!=NULL;tmp=tmp->next) printf("%s",tmp->str); return; }
In pratica se inserisco una stringa di lunghezza 10 come "ciao mamma" dovrebbe creare due nodi uno con ciao e poi uno con mamma e poi dovrebbe stampare" mamma ciao" perchè inserisco in testa ogni nodo ma non succede nulla.Potete dirmi dove posso aver sbagliato?
'; nuovo->next=testa; testa=nuovo; } } return testa; } void stampaLista(nodo *testa) { nodo *tmp; for(tmp=testa;tmp!=NULL;tmp=tmp->next) printf("%s",tmp->str); return; }
In pratica se inserisco una stringa di lunghezza 10 come "ciao mamma" dovrebbe creare due nodi uno con ciao e poi uno con mamma e poi dovrebbe stampare" mamma ciao" perchè inserisco in testa ogni nodo ma non succede nulla.Potete dirmi dove posso aver sbagliato?
aaa