Advertisement
andresnogales

NumbersStack.java

Sep 29th, 2021
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.51 KB | None | 0 0
  1. import java.util.Stack;
  2.  
  3. @SuppressWarnings("serial")
  4. public class NumbersStack extends Stack<Integer>{
  5.        
  6.     /**
  7.      * Método que apila un número de manera que la pila de números esté ordenada
  8.      * de menor a mayor desde el fondo hacia la cima
  9.      * @param number:  número entero que se va a apilar
  10.      * Pre: un número entero
  11.      * Pos: no retorna nada, la pila queda ordenana de menor a mayor
  12.      */
  13.     public void pushNumber(Integer number) {
  14.        
  15.         if(this.empty())
  16.             //Si la pila está vacia, se agrega el número
  17.             this.push(number);
  18.         else {
  19.             if(this.peek() <= number)
  20.                 //Si el número de la cima no es mayor, se agrega el número
  21.                 this.push(number);
  22.             else {                             
  23.                
  24.                 Stack<Integer> aux = new Stack<Integer>();
  25.                
  26.                 //Se guardarán los números en una pila auxiliar, desempilando
  27.                 //hasta que se verifique que la cima sea menor al número, o
  28.                 //en el peor de los casos, hasta que no queden números por
  29.                 //desempilar
  30.                
  31.                 while(!this.isEmpty() && this.peek() >= number) {
  32.                     aux.push(this.pop());
  33.                 }
  34.                
  35.                 //Se agrega el número a la pila
  36.                 this.push(number);
  37.                
  38.                 //Se agregan los números de la pila auxiliar a la pila original
  39.                 while(!aux.isEmpty()) {
  40.                     this.push(aux.pop());
  41.                 }                  
  42.             }
  43.         }
  44.     }
  45.    
  46.     public void print() {
  47.         for(Integer number : this) {
  48.             System.out.println(number);
  49.         }
  50.        
  51.         System.out.println("\nFondo de la pila: " + this.firstElement());
  52.         System.out.println("\nCima de la pila: " + this.peek());
  53.     }
  54.  
  55. }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement