riverstifler

Pila.java

Oct 25th, 2020 (edited)
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.23 KB | None | 0 0
  1. // Cambiar head por tail e usar "https://pastebin.com/F8Dbake1".
  2. public class Pila<T> {
  3.     private NodoPila<Object> head;
  4.     private NodoPila<Object> tail;
  5.     int count;
  6.     public Pila() {
  7.         head=null;
  8.         count=0;
  9.         tail=null;
  10.     }
  11.     //saber pila vacia.
  12.     public boolean empty() {
  13.         return head==null;
  14.     }
  15.     //pushear un elemento a la Pila.
  16.     public void push(Object element) {
  17.         NodoPila<Object> temp = new NodoPila<Object>(element);
  18.       if(count==0) {
  19.           this.head=this.tail=temp;
  20.           ++count;
  21.       }else {
  22.          this.tail.next=temp;
  23.          this.tail=temp;
  24.          ++count;
  25.       }
  26.     }
  27.     //pop un elemento de la Pila.
  28.     public Object pop() {
  29.         if (empty()) {
  30.             throw new RuntimeException("La pila está vacía...");
  31.         }
  32.        
  33.         Object item = this.tail.data;
  34.         if (this.head.next == null) {
  35.             this.head = this.tail = null;
  36.         } else {
  37.             NodoPila<Object> skip = this.head;
  38.             while (skip.next.next != null) {
  39.                 skip = skip.next;
  40.             }
  41.             this.tail = skip;
  42.             this.tail.next = null;
  43.         }
  44.         --this.count;
  45.         return item;
  46.    
  47.    
  48.     }
  49.     //peek muestra sin sacar cima de Pila.
  50.     public Object peek() {
  51.         if (empty()) {
  52.             throw new RuntimeException("La pila está vacía...");
  53.         }
  54.         return tail.data;
  55.     }
  56.     //tamaño Pila.
  57.     public int size() {
  58.         return count;
  59.     }
  60.      //region Object Methods
  61.      
  62.     @Override
  63.     public String toString() {
  64.  
  65.         if (size() <=0) {
  66.             return "La pila se encuentra Vacia....desu";
  67.         }
  68.  
  69.         // from https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuilder.html
  70.         StringBuilder sb = new StringBuilder();
  71.         //Crear tail enlazarlo con el primer modo cargado y utilizarlo para recorre la pila correctamente.
  72.         sb.append("[" + head.data.toString());
  73.         for (NodoPila<?> skip = head.next; skip != null; skip = skip.next) {
  74.             sb.append(", " + skip.data.toString());
  75.         }
  76.         sb.append("]");
  77.  
  78.         return sb.toString();
  79.     }
  80.     //endregion
  81. }
  82.  
Add Comment
Please, Sign In to add comment