Hola a todos,alguien me podría orientar acerca de como convertir el siguiente módulo para que al tiempo que me vaya capturando números los vaya mandando al nodo pero en orden ascendente?
//Asi declaro la estructura typedef struct NODOS{ int dato; NODOS* liga; }NODO; NODO* p; NODO* q; NODO* t; NODO* x;
//Este es el módulo de captura que necesito cambiar para que me vaya ordenando todo ascendentemente y después de ésto ya los mande al nodo con la liga que le corresponda de acuerdo a si el número es mayor o menor.
Oye pues en realidad no entiendo muy bien tú código pero si lo que quieres es ir ordenando los elementos de la lista en forma ascendente tendrías que hacer algo como esto :(como te dije, no capto la lógica de tú código pero te pondré esto a manera de ejemplo).
Código:
void llenar(void)/*función llamada para crear nuevos nodos y llenarlos con valores enteros*/ {
AUX=(struct lista *)malloc(sizeof(struct lista));/*AUX apunta al nuevo nodo creado*/
clrscr( ); printf("Introduce un numero: "); scanf("%d",&AUX->num); AUX->sig=NULL; if (CAB==NULL)/*CAB apunta al nodo cabeza(primer nodo de la lista)*/ CAB=AUX; else if (CAB->num > AUX->num) { AUX->sig=CAB; CAB=AUX; } else { P=F=CAB; while (P->num < AUX->num && P!=NULL) { if (P==CAB) P=P->sig; else { P=P->sig; F=F->sig; } } AUX->sig=F->sig; F->sig=AUX; } }
esta es la estructura de mi ejemplo:
Código:
struct lista { int num;
struct lista *sig; }*CAB=NULL,*AUX=NULL,*F=NULL,*P=NULL;
Este es un ejemplo que consegui hace un tiempo porai cuando me tocó ver listas enlazadas simples y la verdad me parecio muy facil de entender y desde entonces lo adopté como propio.
Entonces para introducir los valores solo tienes que hacer la llamada a la función llenar() tantas veces como valores quieras introducir y con los movimientos que se hacen con los punteros se logrará hacer una ordenación ascendente de todos los números que se introduzcan.
Espero entiendas y te sirva este ejemplo tanto como me sirvio a mí.
suerte
p.d: si quieres ver el código completo solo pidelo y lo postearé.Es uncódigo de ejemplo bien sencillo y fácil de entender. _________________ Que viva el che,el lenguaje c y la banda ancha...