Hello everybody :)
I have a problem about sorting a linked list. The following is the code that I wrote in C, it works well at this moment; it just generates random numbers, it just prints the random numbers generated and the even numbers. But I need to sort these numbers (only the even numbers), but I don´t know how to do that. If you could help me, I will appreciate it :)
This is my code (sorry, is in Spanish :( ) but I can explain my code if you need some little help to read my code. Please help me, this homework is for tomorrow :'( :(
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
typedef int Objeto;
typedef struct Elemento
{
Objeto dato;
struct Elemento *siguiente;
}Nodo;
/*protoripo de las funciones*/
void inserPrimero(Nodo** lista, Objeto entrada);
Nodo* crearNodo(Objeto x);
int main()
{
Objeto d;
Nodo *lista, *ptr;
int k, i, n;
lista = NULL; /*Aquí se crea una lista vacía*/
/*----------------------- generar random numbers ---------------------------*/
srand((unsigned)time(NULL));
for (d = rand()%MAX; d; )/* Ciclo termina cuando se genera el número 0 */
{
inserPrimero(&lista, d);
d = rand()%MAX;
//d = random(MAX);
}
/*-------------------- identificar numeros aleatorios ----------------------*/
printf("\n\n");
printf("Conjunto de numeros aleatorios hasta encontrar el 0\n\n");
for (i = 0, ptr = lista; ptr!=NULL; ptr = ptr -> siguiente) //recorrer la lista
{
printf ("%d", ptr -> dato);
k++;
printf("%c", (k%15 ? ' ' : '\n'));
}
printf("\n\n");
/* -------------------------identificar numeros pares -----------------------*/
printf("PARES\n\n");
for (k = 0, ptr = lista; ptr!=NULL; ptr = ptr -> siguiente)
if (ptr -> dato%2 == 0) /* se recorre la lista para escribir los pares */
{ printf("%d ", ptr -> dato);
k++;
printf("%c",(k%15 ? ' ' : '\n')); /* Despliega 20 datos por línea */
}
printf("\n\n");
/* -------------------------- ordenar los numeros pares ---------------------*/
//HERE: ... I WANT TO SORT MY EVEN NUMBERS
}
void inserPrimero(Nodo** lista, Objeto entrada)
{ Nodo *nuevo ;
nuevo = crearNodo(entrada);
nuevo -> siguiente = *lista;
*lista = nuevo;
}
Nodo* crearNodo(Objeto x)
{ Nodo *a ;
a = (Nodo*)malloc(sizeof(Nodo)); /* asigna nuevo nodo */
a -> dato = x;
a -> siguiente = NULL;
return a;
}
Thanks in advance :S:)