Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*
  2.  * Description: Generic Stack Example
  3.  * Author     : Marco 'RootkitNeo'
  4.  *
  5.  */
  6.  
  7. class Stack<T> {
  8.   private int size;            // Numero di elementi effettivamente contenuti
  9.   private Object[] elements;   // Elementi contenuti
  10.  
  11.   // Costruttori
  12.   // ---------------------------------------------------------------------
  13.   Stack(int initialCapacity) {
  14.     this.elements = new Object[initialCapacity];
  15.  
  16.   }
  17.  
  18.   // Capacita' iniziale a 10 elmenti se non specificata
  19.   Stack() {
  20.     this(10);
  21.   }
  22.   // ---------------------------------------------------------------------
  23.  
  24.   // T viene sostituito dal tipo di dato passato
  25.   // ---------------------------------------------------------------------
  26.   void push(T element) {
  27.     if(size == elements.length-1) increaseSize();
  28.     elements[++size] = element;
  29.   }
  30.   // ---------------------------------------------------------------------
  31.  
  32.   @SuppressWarnings("unchecked")
  33.   // Estraggo l'elemento in cima allo stack
  34.   // ---------------------------------------------------------------------
  35.   T pop() {
  36.     return (T) elements[size--];
  37.   }
  38.   // ---------------------------------------------------------------------
  39.  
  40.   int getSize() {
  41.     return size;
  42.   }
  43.  
  44.   int getRealSize() {
  45.     return elements.length;
  46.   }
  47.  
  48.  
  49.   private void increaseSize() {
  50.     Object[] newElements = new Object[elements.length + 10];
  51.    
  52.     for(int i=0; i<elements.length; i++) {
  53.       newElements[i] = elements[i];
  54.     }
  55.    
  56.     elements = newElements;
  57.    
  58.     newElements = null;
  59.   }
  60.  
  61. }