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");
}