Cabana_Mario_Ariel_F

PilaLinkedList_Definitiva1

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