creo que ya esta
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct nodolista{
int num;
struct nodolista *siguiente;
struct nodolista *anterior;
}tiponodo;
/*
void ordenar(tiponodo *lista)
{
int i=1;
tiponodo *nodo,*anterior=NULL,*siguiente=NULL;
while(i)
{
nodo=lista;
i=0;
while(nodo)
{
siguiente=nodo->siguiente;
anterior=nodo->anterior;
if(siguiente!=NULL && nodo->num > siguiente->num)
{
if(anterior!=NULL)
{
anterior->siguiente=siguiente;
}
siguiente->anterior=anterior;
if(siguiente->siguiente!=NULL)
{
siguiente->siguiente->anterior=nodo;
}
nodo->siguiente=siguiente->siguiente;
nodo->anterior=siguiente;
siguiente->siguiente=nodo;
i=1;
}
else
{
nodo=nodo->siguiente;
}
}
}
}
*/
int insertar(tiponodo **);
void ordenar(tiponodo *);
void mostrar(tiponodo *);
tiponodo *crearnodo(void);
void main(void )
{
tiponodo *lista=NULL;
int cont;
cont=insertar(&lista);
clrscr();
printf("%d",cont);
printf("Antes de ordenar:nn");
mostrar(lista);
ordenar(lista);
printf("nDespues de ordenar;nn");
mostrar(lista);
getch();
}
int insertar(tiponodo **lista)
{
tiponodo *nodo,*anterior,temp;
int sw=1,cont=0;
printf("nIntroduce una letra para salirn");
while(sw==1)
{
printf("nIntroduce un numero: ");
sw=scanf("%d",&temp.num);
if(sw)
{
nodo=crearnodo();
nodo->num=temp.num;
if(*lista==NULL)
{
*lista=nodo;
nodo->anterior=nodo->siguiente=NULL;
}
else
{
anterior->siguiente=nodo;
nodo->anterior=anterior;
nodo->siguiente=NULL;
cont++;
}
anterior=nodo;
}
}
return(cont);
}
void ordenar(tiponodo *lista){
int i=1;
tiponodo *nodo,*anterior=NULL,*siguiente=NULL;
while(i){
nodo=lista;
i=0;
while(nodo!=NULL){
siguiente=nodo->siguiente;
anterior=nodo->anterior;
if(siguiente!=NULL && nodo->num > siguiente->num){
if(anterior!=NULL){
anterior->siguiente=siguiente;
}
siguiente->anterior=anterior;
if(siguiente->siguiente!=NULL){
siguiente->siguiente->anterior=nodo;
}
nodo->siguiente=siguiente->siguiente;
nodo->anterior=siguiente;
siguiente->siguiente=nodo;
i=1;
}
else
{
nodo=nodo->siguiente;
}
}
}
}
void mostrar(tiponodo *lista)
{
tiponodo *nodo;
nodo=lista;
while(nodo!=NULL)
{
printf("El numero %dn",nodo->num);
nodo=nodo->siguiente;
}
}
tiponodo *crearnodo(void)
{
tiponodo *nodo;
nodo=(tiponodo *)malloc(sizeof(tiponodo));
if(nodo==NULL)
{ printf(" no hay suficiente memeoria");}
return(nodo);
}