Buenos días
Necesito generar listas enlazada de números aleatorios enteros y ordenarlos por el método de ordenamiento burbuja
Este es el codigo que estoy manejando pero no se como hacer la parte del ordenamiento con las listas y la parte aleatoria
Espero me puedan ayuda, gracias.
Mod: Los códigos deben ir en etiquetas GeSHi
Necesito generar listas enlazada de números aleatorios enteros y ordenarlos por el método de ordenamiento burbuja
Este es el codigo que estoy manejando pero no se como hacer la parte del ordenamiento con las listas y la parte aleatoria
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct _nodo{
int numero;
struct _nodo *siguiente;
}_Nodo;
typedef _Nodo * _pNodo;
_pNodo CrearLista(int numero)
{
_pNodo Lista;
Lista = (_pNodo)malloc(sizeof(_Nodo));
Lista->numero = numero;
Lista->siguiente = NULL;
return Lista;
}
_pNodo InsertarElementoAlFinal(int numero, _pNodo ListaInicial)
{
_pNodo NuevoNodo;
_pNodo Auxiliar = ListaInicial;
NuevoNodo = malloc(sizeof(_Nodo));
NuevoNodo->numero = numero;
NuevoNodo->siguiente = NULL;
if(ListaInicial->siguiente == NULL)
{
ListaInicial->siguiente = NuevoNodo;
}
else
{
while(Auxiliar->siguiente != NULL)
{
Auxiliar = Auxiliar->siguiente;
}
Auxiliar->siguiente = NuevoNodo;
}
return NuevoNodo; ///RETORNAMOS DIRECCIÓN DEL ELEMENTO INSERTADO
}
_pNodo InsertarElementoAlInicio(int numero, _pNodo ListaInicial)
{
_pNodo NuevoNodo;
NuevoNodo = malloc(sizeof(_Nodo));
NuevoNodo->numero = numero;
NuevoNodo->siguiente = ListaInicial;
return NuevoNodo; ///RETORNAMOS NUEVA LISTA INICIAL
}
_pNodo InsertarElementoPosterior(int numero, _pNodo ElementoAnterior)
{
_pNodo NuevoNodo;
NuevoNodo = malloc(sizeof(_Nodo));
NuevoNodo->numero = numero;
NuevoNodo->siguiente = ElementoAnterior->siguiente;
ElementoAnterior->siguiente = NuevoNodo;
return NuevoNodo; ///RETORNAMOS DIRECCIÓN DEL ELEMENTO INSERTADO
}
_pNodo EliminarPrimerElemento(_pNodo Lista)
{
_pNodo Auxiliar;
Auxiliar = Lista;
if(Auxiliar->siguiente == NULL)
{
return Lista; ///SI NO HAY ELEMENTOS DEJAMOS TODO IGUAL
}
Lista = Auxiliar->siguiente;
free(Auxiliar);
return Lista; ///RETORNAMOS LA NUEVA BASE DE LA LISTA
}
///ELIMINAMOS ELEMENTO POR SU DIRECCIÓN
int EliminarElemento(_pNodo Elemento, _pNodo Lista)
{
_pNodo Auxiliar;
Auxiliar = Lista;
while(Auxiliar != NULL)
{
if(Auxiliar->siguiente == Elemento)
{
break;
}
Auxiliar = Auxiliar->siguiente;
}
if(Auxiliar == NULL)
{
return 0;
}
else
{
if(Elemento->siguiente == NULL)
{
Auxiliar->siguiente = NULL;
}
else
{
Auxiliar->siguiente = Elemento->siguiente;
}
free(Elemento);
return 1;
}
}
///BUSQUEDA DE ELEMENTOS
_pNodo BuscarElemento(int numero, _pNodo Lista)
{
_pNodo Auxiliar;
Auxiliar = Lista;
while(Auxiliar != NULL)
{
if(Auxiliar->numero == numero)
{
break;
}
Auxiliar = Auxiliar->siguiente;
}
return Auxiliar; ///RETORNAMOS DIRECCIÓN DEL ELEMENTO ENCONTRADO
}
void OrdenarLista()
{
_Nodo *p=NULL;
_Nodo *t=NULL;
int temp, i, j;
for(i=0;i<15; i++)
{
for(j=0;j<15;j++)
{
if(numero[j]>numero[j+1])
{
temp = numero[j];
numero[j] = numero[j+1];
numero[j+1] = temp;
}
}
}
///ASCENDENTE
for(i=0; i<15; i++)
{
printf("%d ",numero[i]);
}
}
int main(){
CrearLista();
int num,i;
srand(time(NULL));
for(i=1; i<=15; i=i+1)
{
num = 1+ rand()%51;
printf("\tELEMENTOS: %d")
}
return 0;
}
Espero me puedan ayuda, gracias.
Mod: Los códigos deben ir en etiquetas GeSHi