Advertisement
nahuelbkn

ultimo

Jun 27th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "pila.h"
  4.  
  5. void cargarPila(Pila *aCargar);
  6. void pasarPila(Pila *origen, Pila *destino);
  7. void pasarPilaEnOrden(Pila *origen, Pila *destino);
  8. int buscaMenor(Pila *dada);
  9. void ordenarANuevaPila(Pila *dada, Pila *ordenada);
  10. void insertarElemento(Pila *enOrden, int elemAInsertar);
  11.  
  12. int main()
  13. {
  14.     Pila dada, secundaria, ordenada;
  15.     inicpila(&dada);
  16.     inicpila(&secundaria);
  17.     inicpila(&ordenada);
  18.  
  19.     int menor = 0;
  20.     int insertar = 0;
  21.  
  22.     cargarPila(&dada);
  23.  
  24.     mostrar(&dada);
  25.     printf("PILA: Dada.\n\n");
  26.  
  27.     ///pasarPila(&dada, &secundaria);
  28.  
  29.     ///pasarPilaEnOrden(&dada, &secundaria);
  30.     ///mostrar(&dada);
  31.     ///printf("PILA: Dada.\n\n");
  32.     ///mostrar(&secundaria);
  33.     ///printf("PILA: Secundaria.\n\n");
  34.  
  35.     ///menor = buscaMenor(&dada);
  36.     ///printf("El menor elemento ingresado es: %i\n\n", menor);
  37.  
  38.     ///ordenarANuevaPila(&dada, &ordenada);
  39.     ///mostrar(&ordenada);
  40.     ///printf("PILA: Ordenada.\n\n");
  41.  
  42.     ///printf("Que elemento desea insertar? >> ");
  43.     ///scanf("%i", &insertar);
  44.  
  45.     ///insertarElemento(&ordenada, insertar);
  46.     ///mostrar(&ordenada);
  47.     ///printf("PILA: Ordenada.\n\n");
  48.  
  49.  
  50.     return 0;
  51. }
  52.  
  53. void cargarPila(Pila *aCargar)
  54. {
  55.     char control;
  56.  
  57.     do
  58.     {
  59.         leer(aCargar);
  60.  
  61.         printf("\n\nDesea seguir cargando la pila? (S/N)..:");
  62.         fflush(stdin);
  63.         scanf("%c", &control);
  64.         control = toupper(control);
  65.     }while(control == 'S');
  66. }
  67.  
  68. void pasarPila(Pila *origen, Pila *destino)
  69. {
  70.     while(!pilavacia(origen))
  71.         apilar(destino, desapilar(origen));
  72. }
  73.  
  74. void pasarPilaEnOrden(Pila *origen, Pila *destino)
  75. {
  76.     Pila aux;
  77.     inicpila(&aux);
  78.  
  79.     pasarPila(origen, &aux);
  80.     pasarPila(&aux, destino);
  81. }
  82.  
  83. int buscaMenor(Pila *dada)
  84. {
  85.     Pila aux, menor;
  86.     inicpila(&aux);
  87.     inicpila(&menor);
  88.  
  89.     apilar(&menor, desapilar(dada));
  90.  
  91.     while(!pilavacia(dada))
  92.     {
  93.         if(tope(&menor) > tope(dada))
  94.         {
  95.             apilar(&aux, desapilar(&menor));
  96.             apilar(&menor, desapilar(dada));
  97.         }
  98.         else
  99.             apilar(&aux, desapilar(dada));
  100.     }
  101.  
  102.     while(!pilavacia(&aux))
  103.     {
  104.         apilar(dada, desapilar(&aux));
  105.     }
  106.  
  107.     return tope(&menor);
  108. }
  109.  
  110. void ordenarANuevaPila(Pila *dada, Pila *ordenada)
  111. {
  112.     Pila aux;
  113.     inicpila(&aux);
  114.  
  115.     while(!pilavacia(dada))
  116.     {
  117.         apilar(ordenada, buscaMenor(dada));
  118.     }
  119. }
  120.  
  121. void insertarElemento(Pila *enOrden, int elemAInsertar)
  122. {
  123.     Pila aux;
  124.     inicpila(&aux);
  125.  
  126.     while(!pilavacia(enOrden) && tope(enOrden) > elemAInsertar )
  127.         apilar(&aux, desapilar(enOrden));
  128.  
  129.     apilar(enOrden, elemAInsertar);
  130.  
  131.     while(!pilavacia(&aux))
  132.         apilar(enOrden, desapilar(&aux));
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement