Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 12 Diciembre 2018, 04:56 am



Título: Dudas sobre el ordenamiento burbuja en listas simples
Publicado por: Beginner Web en 12 Diciembre 2018, 04:56 am
Código
  1. //Porque el codigo funciona asi en listas vacias o no?
  2. void ordenar(tlista &lista)
  3. {
  4. puntero i, j;
  5. estructura cambio;
  6. bool ordenado=true;
  7. if(lista.inicio!=NULL){
  8. while(ordenado){
  9. ordenado=false;
  10. for(i=lista.inicio;i->sig!=NULL;i=i->sig){
  11. j=i->sig;
  12. if(i->dato>j->dato){
  13. cambio=i->dato;
  14. i->dato=j->dato;
  15. j->dato=cambio;
  16. ordenado=true;
  17. }
  18. }
  19. }
  20. }
  21. }
  22. //y este codigo solo funciona en listas no vacias, me perdí
  23. void ordenar(tlista &lista)
  24. {
  25. puntero i, j;
  26. estructura cambio;
  27. bool ordenado=true;
  28. while(ordenado){
  29. ordenado=false;
  30. for(i=lista.inicio;i->sig!=NULL;i=i->sig){
  31. j=i->sig;
  32. if(i->dato>j->dato){
  33. cambio=i->dato;
  34. i->dato=j->dato;
  35. j->dato=cambio;
  36. ordenado=true;
  37. }
  38. }
  39. }
  40. }


Título: Re: Dudas sobre el ordenamiento burbuja en listas simples
Publicado por: K-YreX en 12 Diciembre 2018, 05:24 am
Creo que el segundo código no funciona en una lista vacía porque si esta está vacía la inicialización del <for> sería <i = NULL> y en la condición del <for> (i->sig != NULL) te daría un problema ya que no existe un puntero a siguiente.
En cambio en el primer código con el <if> haces una excepción para cuando esto ocurra. :-X


Título: Re: Dudas sobre el ordenamiento burbuja en listas simples
Publicado por: Beginner Web en 12 Diciembre 2018, 05:52 am
Creo que el segundo código no funciona en una lista vacía porque si esta está vacía la inicialización del <for> sería <i = NULL> y en la condición del <for> (i->sig != NULL) te daría un problema ya que no existe un puntero a siguiente.
En cambio en el primer código con el <if> haces una excepción para cuando esto ocurra. :-X
Muchas gracias, tambien pensé lo mismo pero queria estar segura  ;-)