Metodologı́a y Tecnologı́a de la Programación. Control 2.3 Pregunta 1 (0.5 ptos) Implementar el TDA Pila (inmutable) de acuerdo a la especificación informal y los métodos en Java dados. Debe utilizarse una representación enlazada con la estructura de datos adjunta. Todas las operaciones deberán ejecutarse en un tiempo O (1). public class Pila { private class Celda { private Celda sig; private Elemento elem; } private Celda inicio; ... } // fin class Pila TDA Pila: Especificación Formal Tipo: Pila (Elemento) Sintaxis: pilavacia → Pila vacia(Pila) → booleano tope(Pila) → Elemento push(Pila,Elemento) → Pila pop(Pila) → Pila Semántica: ∀ P ∈ Pila, ∀ E ∈ Elemento: vacia(pilavacia) ⇒ cierto vacia(push(P,E)) ⇒ falso tope(pilavacia) ⇒ error tope(push(P,E)) ⇒ E pop(pilavacia) ⇒ error pop(push(P,E)) ⇒ P Clase Pila class Pila Clase Elemento class Elemento Constructores Pila() Pila(Pila p, Elemento e) Constructores Elemento() Métodos boolean vacia() Elemento tope() Pila pop() Métodos int valor() Resolución Control 2.3 Pregunta 1 (0.5 ptos) public class Pila { private class Celda { private Celda sig; private Elemento elem; } private Celda inicio; public Pila() { inicio = null; } public Pila(Pila p, Elemento e) { inicio = new Celda(); inicio.sig = p.inicio; inicio.elem = e; } public Pila pop() { Pila p = new Pila(); p.inicio = inicio.sig; return p; } public Elemento tope() { return inicio.elem; } public boolean vacia() { return (inicio==null); } } // fin class Pila