Hola, tengo la siguiente lista, es de las mas simples, solo con el puntero hacia adelante y el ultimo nodo con puntero a null... Ahora, el codigo me compila sin ningun error o warning, y todas las funciones hacen lo que quiero... excepto la funcion sort, me tarde arto en pensar como lo podria hacer, y segun yo deberia funcionar pero cuando compilo y ejecuto como que el programa no hace nada, ¿alguien que sepa arto me puede ayudar?.
Muchas gracias de antemano.
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
typedef struct registro {
int edad;
struct registro *sig;
} nodo;
void crear(nodo **pointer)
{
(*pointer) = NULL;
}
void agregar(nodo **pointer, int x)
{
nodo *aux, *nuevo;
aux = (*pointer);
nuevo
= (nodo
*)malloc(sizeof(nodo
));
if (nuevo != NULL)
{
nuevo->edad = x;
nuevo->sig = NULL;
}
if (*pointer == NULL)
(*pointer) = nuevo;
else
{
while(aux->sig != NULL)
aux = aux->sig;
aux->sig = nuevo;
}
}
void imprimir(nodo **pointer)
{
nodo *aux;
aux = (*pointer);
if (aux != NULL)
{
while (aux != NULL)
{
aux = aux->sig;
}
}
else
printf(" La lista esta vacia"); }
void sort(nodo **pointer)
{
nodo *aux, *aux2, *temp;
int mayor = 0;
aux = (*pointer);
aux2 = aux;
while (aux->sig != NULL)
{
while (aux2 != NULL)
{
if (aux2->edad >= mayor)
mayor = aux2->edad;
}
aux2 = aux;
while (aux2->sig != NULL)
{
if ((aux2->sig)->edad == mayor)
{
temp = (aux2->sig)->sig;
(aux2->sig)->sig = aux;
aux->sig = temp;
}
aux2 = aux2->sig;
}
aux = aux->sig;
}
}
int main()
{
nodo *grupo;
crear(&(grupo));
agregar(&(grupo), 15);
imprimir(&(grupo));
agregar(&(grupo), 10);
imprimir(&(grupo));
agregar(&(grupo), 55);
imprimir(&(grupo));
agregar(&(grupo), 75);
imprimir(&(grupo));
agregar(&(grupo), 25);
imprimir(&(grupo));
agregar(&(grupo), 5);
imprimir(&(grupo));
agregar(&(grupo), 35);
imprimir(&(grupo));
sort(&(grupo));
imprimir(&(grupo));
return EXIT_SUCCESS;
}