Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.58 KB | None | 0 0
  1. #pragma warning (disable : 4996)
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. struct Lista {
  7.     int info;
  8.     struct Lista * siguiente;
  9. };
  10.  
  11. typedef struct Lista * NodoListaPtr;
  12.  
  13. void Insertar(NodoListaPtr *, int);
  14. void Imprimir(NodoListaPtr);
  15. void OrdenBurbuja(NodoListaPtr);
  16.  
  17. void Intercambio(NodoListaPtr, NodoListaPtr);
  18. bool vacia(NodoListaPtr);
  19.  
  20. int main()
  21. {
  22.     NodoListaPtr Inicio = NULL;
  23.     int i, val, max, op;
  24.  
  25.     printf("PROGRAMA DE ORDENAMIENTO BURBUJA CON LISTAS."
  26.         "\nFECHA DE ENTREGA: 08.11.16."
  27.         "\n"
  28.         "\n%cCu%cntos elementos tendr%c la lista? ", 168, 160, 160);
  29.     scanf("%d", &max);
  30.  
  31.     for (i = 0;i < max;i++) {
  32.         printf("\nIngrese el valor del elemento %d: ", i);
  33.         scanf("%d", &val);
  34.         Insertar(&Inicio, val);
  35.         Imprimir(Inicio);
  36.         printf("\n%cDesea Ordenar la Lista?"
  37.             "\n1 = S%c, 0 = NO: ", 168, 214);
  38.         scanf("%d", &op);
  39.         if (op == 1) {
  40.             OrdenBurbuja(Inicio);
  41.             Imprimir(Inicio);
  42.         }
  43.     }
  44.  
  45.     system("PAUSE");
  46. }
  47.  
  48. bool vacia(NodoListaPtr Inicial)
  49. {
  50.     return Inicial == NULL;
  51. }
  52.  
  53. void Insertar(NodoListaPtr * Inicial, int item)
  54. {
  55.     NodoListaPtr NuevoPtr;
  56.     NodoListaPtr SiguientePtr;
  57.     NodoListaPtr ActualPtr;
  58.  
  59.     NuevoPtr = (NodoListaPtr)malloc(sizeof(Lista));
  60.  
  61.     if (NuevoPtr != NULL) {
  62.         NuevoPtr->info = item;
  63.         NuevoPtr->siguiente = NULL;
  64.  
  65.         SiguientePtr = NULL;
  66.         ActualPtr = *Inicial;
  67.  
  68.         if (vacia(*Inicial)) {
  69.             NuevoPtr->siguiente = *Inicial;
  70.             *Inicial = NuevoPtr;
  71.         }
  72.         else
  73.         {
  74.             SiguientePtr = *Inicial;
  75.  
  76.             while (SiguientePtr->siguiente != NULL) {
  77.                 SiguientePtr = SiguientePtr->siguiente;
  78.             }
  79.                 SiguientePtr->siguiente = NuevoPtr;
  80.                 NuevoPtr->siguiente = NULL;
  81.         }
  82.     }
  83. }
  84.  
  85. void Imprimir(NodoListaPtr Lista)
  86. {
  87.     if (vacia(Lista)) {
  88.         printf("\nLa Lista est%c vac%ca.\n", 160, 161);
  89.         system("PAUSE");
  90.     }
  91.     else {
  92.         printf("\nElementos de la Lista:");
  93.  
  94.         while (Lista != NULL) {
  95.             printf("%4d", Lista->info);
  96.             Lista = Lista->siguiente;
  97.         }
  98.     }
  99. }
  100.  
  101. void Intercambio(NodoListaPtr NodoA, NodoListaPtr NodoB)
  102. {
  103.     int temp = NodoA->info;
  104.     NodoA->info = NodoB->info;
  105.     NodoB->info = temp;
  106. }
  107.  
  108. void OrdenBurbuja(NodoListaPtr Lista)
  109. {
  110.     int mezclado;
  111.  
  112.     NodoListaPtr PtrUno;
  113.     NodoListaPtr PtrAux = NULL;
  114.  
  115.     if (vacia(Lista)) {
  116.         printf("\nLa Lista est%c vac%ca.\n", 160, 161);
  117.         system("PAUSE");
  118.     }
  119.     else {
  120.         do
  121.         {
  122.             mezclado = 0;
  123.             PtrUno = Lista;
  124.  
  125.             while (PtrUno->siguiente != PtrAux) {
  126.                 if (PtrUno->info > PtrUno->siguiente->info) {
  127.                     Intercambio(PtrUno, PtrUno->siguiente);
  128.                     mezclado++;
  129.                 }
  130.                 PtrUno = PtrUno->siguiente;
  131.             }
  132.             PtrAux = PtrUno;
  133.         } while (mezclado);
  134.  
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement