Advertisement
nahuelbkn

SelecciónEInserción(EnPilas)

Jun 27th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "pila.h"
  4.  
  5. void cargarPila(Pila *aCargar);
  6. int buscaMenor(Pila *dada);
  7. void ordenarANuevaPila(Pila *dada, Pila *ordenada);
  8. void insertarElemento(Pila *enOrden, int elemAInsertar);
  9.  
  10. int main()
  11. {
  12.     Pila dada, ordenada;
  13.     inicpila(&dada);
  14.     inicpila(&ordenada);
  15.  
  16.     int menor = 0;
  17.     int insertar = 0;
  18.  
  19.     cargarPila(&dada);
  20.     ordenarANuevaPila(&dada, &ordenada);
  21.     printf("Que elemento desea insertar? >> ");
  22.     scanf("%i", &insertar);
  23.     insertarElemento(&ordenada, insertar);
  24. }
  25.  
  26. void cargarPila(Pila *aCargar)
  27. {
  28.     char control;
  29.  
  30.     do
  31.     {
  32.         leer(aCargar);
  33.  
  34.         printf("\n\nDesea seguir cargando la pila? (S/N)..:");
  35.         fflush(stdin);
  36.         scanf("%c", &control);
  37.         control = toupper(control);
  38.     }while(control == 'S');
  39. }
  40.  
  41. int buscaMenor(Pila *dada)
  42. {
  43.     Pila aux, menor;
  44.     inicpila(&aux);
  45.     inicpila(&menor);
  46.  
  47.     apilar(&menor, desapilar(dada));
  48.  
  49.     while(!pilavacia(dada))
  50.     {
  51.         if(tope(&menor) > tope(dada))
  52.         {
  53.             apilar(&aux, desapilar(&menor));
  54.             apilar(&menor, desapilar(dada));
  55.         }
  56.         else
  57.             apilar(&aux, desapilar(dada));
  58.     }
  59.  
  60.     while(!pilavacia(&aux))
  61.     {
  62.         apilar(dada, desapilar(&aux));
  63.     }
  64.  
  65.     return tope(&menor);
  66. }
  67.  
  68. void ordenarANuevaPila(Pila *dada, Pila *ordenada)
  69. {
  70.     Pila aux;
  71.     inicpila(&aux);
  72.  
  73.     while(!pilavacia(dada))
  74.     {
  75.         apilar(ordenada, buscaMenor(dada));
  76.     }
  77. }
  78.  
  79. void insertarElemento(Pila *enOrden, int elemAInsertar)
  80. {
  81.     Pila aux;
  82.     inicpila(&aux);
  83.  
  84.     while(!pilavacia(enOrden) && tope(enOrden) > elemAInsertar )
  85.         apilar(&aux, desapilar(enOrden));
  86.  
  87.     apilar(enOrden, elemAInsertar);
  88.  
  89.     while(!pilavacia(&aux))
  90.         apilar(enOrden, desapilar(&aux));
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement