Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. TLista Lista_mergeListas(TLista *L1, TLista * L2) {
  2. TLista LMerged;
  3. Lista_crear(&LMerged);
  4.  
  5. TNodo *ptr_rec1, *ptr_rec2;
  6. ptr_rec1 = L1->inicio;
  7. ptr_rec2 = L2->inicio;
  8.  
  9. while (ptr_rec1 != NULL && ptr_rec2 != NULL) {
  10. if (ptr_rec1->elem < ptr_rec2->elem) {
  11. Lista_insertar(&LMerged, ptr_rec1->elem);
  12. ptr_rec1 = ptr_rec1->sig;
  13. } else {
  14. Lista_insertar(&LMerged, ptr_rec2->elem);
  15. ptr_rec2 = ptr_rec2->sig;
  16. }
  17. }
  18.  
  19. while (ptr_rec1 != NULL) {
  20. Lista_insertar(&LMerged, ptr_rec1->elem);
  21. ptr_rec1 = ptr_rec1->sig;
  22. }
  23.  
  24. while (ptr_rec2 != NULL) {
  25. Lista_insertar(&LMerged, ptr_rec2->elem);
  26. ptr_rec2 = ptr_rec2->sig;
  27. }
  28.  
  29. return LMerged;
  30. }
  31.  
  32. void partirLista(TLista* L, TLista* primeraMitad, TLista * segundaMitad) {
  33. //caso base: L tiene 2 elementos
  34. int lonLista = Lista_tamanho(L);
  35. if (lonLista == 2) {
  36. Lista_insertar(primeraMitad, L->inicio->elem);
  37. Lista_insertar(segundaMitad, L->fin->elem);
  38. } else {
  39. TNodo* curNode = L->inicio;
  40. int i;
  41. for (i = 0; i < lonLista / 2; i++) {
  42. Lista_insertar(primeraMitad, curNode->elem);
  43. curNode = curNode->sig;
  44. }
  45. for (i = lonLista / 2; i < lonLista; i++) {
  46. Lista_insertar(segundaMitad, curNode->elem);
  47. curNode = curNode->sig;
  48. }
  49. }
  50. }
  51.  
  52. void Lista_mergesort(TLista * L) {
  53. if (L->numElem > 1) {
  54. TLista primeraMitad, segundaMitad;
  55. Lista_crear(&primeraMitad);
  56. Lista_crear(&segundaMitad);
  57. partirLista(L, &primeraMitad, &segundaMitad);
  58. Lista_mergesort(&primeraMitad);
  59. Lista_mergesort(&segundaMitad);
  60. *L = Lista_mergeListas(&primeraMitad, &segundaMitad);
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement