E il mio problema è proprio questo di fare ripete il ciclo n volte...non saprei come fare...pensavo con un ciclo for tipo:
Il problema è che n non ce l'ho perchè l'ho dichiarato in crealistacodice:for(i=1;i<=n;i++) while(aux!=NULL){ if.... ..... }
ti metto il codice completo:
codice:#include <stdio.h> #include <malloc.h> struct elemento{ int val; struct elemento *succ; struct elemento *prec; }; struct elemento *crealista(); void visualizza(struct elemento *); void maggiore(struct elemento *); void ordine(struct elemento *); main() { struct elemento *puntlista; puntlista=crealista(); visualizza(puntlista); maggiore(puntlista); ordine(puntlista); getchar(); getchar(); } struct elemento *crealista() { int i,n; struct elemento *testa,*corpo; printf("Quanti valori vuoi inserire? : "); scanf("%d",&n); testa=(struct elemento *)malloc(sizeof(struct elemento)); testa->prec=NULL; printf("Inserisci il 1%c valore: ",248); scanf("%d",&testa->val); corpo=testa; for(i=2;i<=n;i++){ corpo->succ=(struct elemento *)malloc(sizeof(struct elemento)); (corpo->succ)->prec=corpo; corpo=corpo->succ; printf("Inserisci il %d%c valore: ",i,248); scanf("%d",&corpo->val); } corpo->succ=NULL; return(testa); } void visualizza(struct elemento *p) { printf("\nLista: "); while(p->succ!=NULL){ printf("%d",p->val); printf("---> "); p=p->succ; } printf("%d",p->val); printf("---> NULL\n\n"); printf("Lista: "); while(p!=NULL){ printf("%d",p->val); printf("---> "); p=p->prec; } printf("NULL\n\n"); } void maggiore(struct elemento *p) { int i,max; while(p->succ!=NULL){ p=p->succ; } max=p->val; while(p!=NULL){ if(p->val > max){ max=p->val; } p=p->prec; } printf("Il valore massimo inserito %c: %d.\n\n",138,max); } void ordine(struct elemento *p) { int valore; struct elemento *aux; aux=p->succ; while(aux!=NULL){ if(p->val>aux->val){ valore=p->val; p->val=aux->val; aux->val=valore; } aux=aux->succ; } while(p!=NULL){ printf("%d --->",p->val); p=p->succ; } printf("NULL\n\n"); }

Rispondi quotando