package stack;

public interface MyStack<T> {
	
	/**
	 * Aggiunge un elemento al top dello stack.
	 * @param Elemento che deve essere aggiunto nello stack.
	 */
	void push(T item);
	
	/**
	 * Rimuove l'elemento al top dello stack.
	 * @return Elemento appena rimosso dallo stack.
	 */
	T pop();
	
	/**
	 * Ritorna l'elemento al top dello stack ma senza rimuoverlo.
	 * @return Elemento al top dello stack.
	 */
	T peek();
	
	/**
	 * Ritorna il numero di elementi correnti nello stack.
	 * @return Numero di elementi nello stack.
	 */
	int size();
	
	/**
	 * Ritorna se ci sono elementi nello stack o meno.
	 * @return 
	 */
	boolean isEmpty();
}
