Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- //Creado por Julio Tentor <jtentor@fi.unju.edu.ar>
- //Modificado y Traducido al Español por Mario Ariel Fernando Cabana <42268639@fi.unju.edu.ar>
- //
- /*
- La clase Pila representa un objeto tipo pila last-in-first-out (LIFO).
- Las usuales operaciones push and pop son proveidas, de igual modo el metodo
- peek para el item de la cima de la pila, un método dedicado a comprobar si
- la pila esta vacia.
- Cuando una pila es creada, esta no contiene items.
- from https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Stack.html
- from https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Stack.html
- from https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Stack.html
- */
- public class Pila<T> {
- //---------------Constantes del objeto Genérico Pila----------------//
- private final static Integer defaulDimension = 10;
- //---------------Atributos del objeto Genérico Pila----------------//
- private T [] dato;
- private Integer contador;
- //-------------Constructores del objeto Genérico Pila--------------//
- public Pila() {
- this(Pila.defaulDimension);
- }
- public Pila(Integer dimension) {
- if (dimension <= 0) {
- throw new RuntimeException("La cantidad de elementos en la pila debe ser positiva");
- }
- this.dato = (T []) new Object[dimension];
- this.contador = 0;
- }
- //----------------Metodos del objeto Genérico Pila-----------------//
- // Verifica si la Pila se encuentra vacía.
- public boolean empty() {
- return this.contador <= 0;
- }
- // Devuelve el dato en la cima de la pila sin sacarlo de la misma.
- public T peek() {
- if (this.empty()) {
- throw new RuntimeException("La pila se encuenta vacía");
- }
- return this.dato[this.contador - 1];
- }
- // Remueve el dato situado en la cima y devuelve el valor removido.
- public T pop() {
- if (this.empty()) {
- throw new RuntimeException("La pila está vacía...");
- }
- --this.contador;
- return this.dato[this.contador];
- }
- // Superpone un dato en la cima de la Pila.
- public T push(T element) {
- if (this.size() >= this.dato.length) {
- T [] temp = (T []) new Object[this.dato.length * 2];
- for (int i = 0; i < this.dato.length; ++i) {
- temp[i] = this.dato[i];
- }
- this.dato = temp;
- }
- this.dato[this.contador] = element;
- ++this.contador;
- return element;
- }
- // Returns the 1-based position where an object is on this stack.
- public int search(Object object) {
- for (int pos = this.contador - 1; pos >= 0; --pos) {
- if (this.dato[pos].equals(object)) {
- return this.contador - pos;
- }
- }
- return -1;
- }
- // from https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Vector.html
- // Retorna el número de componenetes en este vector.
- public int size() {
- return this.contador;
- }
- //-----------------Mostrar el objeto Genérico Pila-----------------//
- @Override
- public String toString() {
- if (this.size() <=0) {
- return "";
- }
- // from https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuilder.html
- StringBuilder sb = new StringBuilder();
- sb.append("[" + this.dato[0].toString());
- for (int i = 1; i < this.size(); ++i) {
- sb.append(", " + this.dato[i].toString());
- }
- sb.append("]");
- return sb.toString();
- }
- }
Add Comment
Please, Sign In to add comment