E il mio problema è proprio questo di fare ripete il ciclo n volte...non saprei come fare...pensavo con un ciclo for tipo:
codice:
for(i=1;i<=n;i++)
while(aux!=NULL){
if....
.....
}
Il problema è che n non ce l'ho perchè l'ho dichiarato in crealista
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");
}