PDA

Visualizza la versione completa : [C] aiuto con liste dinamice di strinche


tentaki
14-06-2014, 16:18
allora ragazzi ho un piccolo problema con le liste, perche non capisco bene come funzionano, tra qualche giorno ho l'esame e sto diventando nervoso
il programma dovrebbe inserire delle stringhe in una lista(il codice non l'ho completato anche perche gia mi dava un sacco di errori compilando)
qualcuno mi puo dare una mano



#include <stdlib.h>
#include <stdio.h>

struct entry
{
char value[80];
struct entry *next;
};
struct lista *crea(int n)
{
struct entry *lista_start, *lista_record;
struct entry *start;
if(n=0)
{
printf("inserisci il prima stringa\n");
start=(struct entry*)malloc(sizeof(struct entry));
gets(start->value);
start->next=NULL;
lista_start=start;
}
else
{
printf("inserisci nuova stringa\n");
lista_record = (struct entry *) malloc (sizeof (struct entry));
gets(lista_record->value);


while ( lista_start->next!= NULL)
{
lista_start = lista_start->next;
}


if (lista_record->next != NULL)
{


lista_record->next = NULL;
lista_start->next=lista_record;
}

getchar();
return lista_start;
}
}
int main ()
{
struct lista *scorri;int m=0;
printf("MENU:\n"
"1-inserire\n"
"2-stampare\n"
"3-uscire\n");
int rsp;
scanf("%d", &rsp);
while(rsp!=3)
{


if(rsp=1)
{
scorri=crea(m);
m++;
}
printf("MENU:\n"
"1-inserire\n"
"2-stampare\n"
"3-uscire\n");

scanf("%d", &rsp);
}


}

MItaly
14-06-2014, 18:37
Che errori d?

tentaki
14-06-2014, 18:43
[Warning] return from incompatible pointer type [enabled by default]

oregon
14-06-2014, 19:23
Cosa

struct lista

?

Non esiste nel tuo codice

tentaki
14-06-2014, 21:06
scusate, ma ho piu volte modificato il testo che mi sono confuso con i nomi
la struct lista uguale a struct entry(comunque non funziona ugualmente)

oregon
14-06-2014, 21:08
rsp=1

nella if deve essere

rsp==1

tentaki
14-06-2014, 21:18
allora nel compilare non mi da piu errori, pero appena eseguo e digito 1 per inserire la stringa mi da errore

oregon
14-06-2014, 21:22
Non puoi essere pi preciso di "mi d errore"?

oregon
14-06-2014, 21:26
Devi correggere anche questo

if(n==0)

Occhio a tutte le if ...

tentaki
15-06-2014, 15:08
#include <stdio.h>#include <stdlib.h>
#define size 90
struct lista
{
char stringa[size];
struct lista *next;
};
struct lista *inserisci(struct lista* testa, char tmp[]);
void stampa(struct lista *testa);
void cerca(struct lista *testa, char icerca[]);


main()
{
struct lista *testa=NULL;
char tmp_stringa[size],icerca[size];
int n;
printf("MENU:\n1-inserisci\n2-stampa ed esci\n");
scanf("%d", &n);
do
{
switch(n)
{
case 1:
printf("inserisci\n");
fflush(stdin);
gets(tmp_stringa);
testa=inserisci(testa,tmp_stringa);
break;
case 2:
stampa(testa);break;
default: printf("ERRORE\n");break;

};
printf("MENU:\n1-inserisci\n2-stampa ed esci\n");
scanf("%d", &n);
}while(n!=2);
do
{
printf("cosa vuoi cercare?\n");
scanf("%s", icerca);
cerca(testa,icerca);
printf("vuoi continuare(si=1/no=0)\n");
scanf("%d", &n);
}while(n==1);
system("pause");

}
struct lista *inserisci(struct lista *testa, char tmp[])
{
struct lista *a,*b;
a=(struct lista*)malloc(sizeof(struct lista));
strcpy(a->stringa,tmp);
a->next=NULL;

if(testa==NULL)
{
return a;
}
for(b=testa;b->next!=NULL; b=b->next);
b->next=a;
return testa;
}
void stampa(struct lista *testa)
{
for(;testa!=NULL; testa=testa->next)
{
printf("%s\n", testa->stringa);
}
}
void cerca(struct lista *testa, char icerca[])
{

for(;testa!=NULL; testa=testa->next)
{
if(strcmp(testa->stringa,icerca)==0)
{
printf("trovato\n");

}

}

}



ho corretto tutto... pero ho un problema adesso con la funzione stampa
avevo provato ad inserire fflush(stdout), ma nnt, come posso risolvere?

Loading