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
Espero me puedan ayuda, gracias.
#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->numero = numero; Lista->siguiente = NULL; return Lista; } _pNodo InsertarElementoAlFinal(int numero, _pNodo ListaInicial) { _pNodo NuevoNodo; _pNodo Auxiliar = ListaInicial; 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->numero = numero; NuevoNodo->siguiente = ListaInicial; return NuevoNodo; ///RETORNAMOS NUEVA LISTA INICIAL } _pNodo InsertarElementoPosterior(int numero, _pNodo ElementoAnterior) { _pNodo NuevoNodo; 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; 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; } 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++) { } } int main(){ CrearLista(); int num,i; for(i=1; i<=15; i=i+1) { } return 0; }
Mod: Los códigos deben ir en etiquetas GeSHi