Cabana_Mario_Ariel_F

TP4E2_Pila_casiDefinitivo

Oct 28th, 2020 (edited)
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.56 KB | None | 0 0
  1. public class Pila<T> {
  2.     //region Atributos.
  3.    
  4.     private NodoPila<Object> head;
  5.     private NodoPila<Object> tail;
  6.     int count;
  7.     //endregion.
  8.    
  9.     //region Constructores.
  10.     public Pila() {
  11.         head=null;
  12.         count=0;
  13.         tail=null;
  14.     }
  15.     //endregion.
  16.    
  17.   //region Metodos de la Cola.
  18.    
  19.     //Inserta un elemento en especifico creando una nueva cima a la Pila.
  20.     public void push(Object element) {
  21.         NodoPila<Object> temp = new NodoPila<Object>(element);
  22.       if(count==0) {
  23.           this.head=this.tail=temp;
  24.           ++count;
  25.       }else {
  26.          this.tail.next=temp;
  27.          this.tail=temp;
  28.          ++count;
  29.       }
  30.     }//Fin push.
  31.    
  32.     //Recupera y remueve la cima de la pila, o retorna un mensaje si la misma esta vacía.
  33.     public Object pop() {
  34.         if (empty()) {
  35.             return "Ninguno, pila vacía...";
  36.         }else {
  37.        
  38.         Object item = this.tail.data;
  39.         if (this.head.next == null) {
  40.             this.head = this.tail = null;
  41.         } else {
  42.             NodoPila<Object> skip = this.head;
  43.             while (skip.next.next != null) {
  44.                 skip = skip.next;
  45.             }
  46.             this.tail = skip;
  47.             this.tail.next = null;
  48.         }
  49.         --this.count;
  50.         return item;
  51.    
  52.         }
  53.     }//Fin pop.
  54.    
  55.     //Recupera, pero no remueve, la cima de la pila, o retorna nulo si se esta vacia.
  56.     public Object peek() {
  57.         if (empty()) {
  58.             return "Nada porque la pila está vacía...";
  59.         }else {
  60.         return tail.data;
  61.         }
  62.     }//Fin peek.
  63.   //region Object Methods
  64.    
  65.   //region Metodos de la Colleccion .
  66.     public boolean empty() {
  67.         return head==null;
  68.     }//Fin empty.
  69.    
  70.     public int size() {
  71.         return count;
  72.     }//Fin size.
  73.      
  74.     //region Override Object basic methods.
  75.     @Override
  76.     public String toString() {
  77.  
  78.         if (size() <=0) {
  79.             return "La pila se encuentra Vacía....";
  80.         }
  81.  
  82.         // from https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuilder.html
  83.         StringBuilder sb = new StringBuilder();
  84.         //Crear tail enlazarlo con el primer modo cargado y utilizarlo para recorre la pila correctamente.
  85.         sb.append("[" + head.data.toString());
  86.         for (NodoPila<?> skip = head.next; skip != null; skip = skip.next) {
  87.             sb.append(", " + skip.data.toString());
  88.         }
  89.         sb.append("]");
  90.  
  91.         return sb.toString();
  92.     }
  93.     //endregion
  94. }
  95.  
Add Comment
Please, Sign In to add comment