Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Escribir una clase llamada Pila, en el fichero Pila.java, que implemente las
estructuras de datos y métodos necesarios para manejar una estructura LIFO
(una pila) de números enteros, cuya capacidad puede definir el usuario.
Debe incluir los siguientes métodos: apilar(elem), desapilar(), verCima(),
vaciar(), estaLlena(), estaVacia() y mostrar().
SOLUCIÓN
Empezamos declarando las dos clases que se utilizarán para gestionar las excepciones
que se lanzarán cuando la pila esté llena y cuando esté vacía, ambas heredan de la clase
Exception.
1
Java
La clase Pila tiene 3 atributos: datos, que es un array para almacenar todos los
elementos de la pila; capacidad, para guardar el tamaño máximo de la estructura de
datos; indice, que indicará la posición en el array del siguiente elemento que hay que
guardar.
// CONSTRUCTORES
// Constructor sin parámetros que define un array de tamaño 10.
public Pila ( )
{
capacidad = 10 ;
indice = 0 ;
datos = new int [capacidad] ;
}
2
Java
// MÉTODOS
// apilar(): apila un elemento en la pila.
// Si está llena, lanza la excepción PilaLlenaException.
public void apilar ( int elem ) throws PilaLlenaException
{
if ( !estaLlena() )
{
datos[indice++] = elem ;
}
else
{
throw new PilaLlenaException ( elem ) ;
}
}
3
Java
if ( pila.estaVacia() )
{
System.out.println ( "\nLa pila esta vacia\n" ) ;
}
try
{
aux = 23 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = -45 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = -12 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = 67 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = 1 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = 0 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = -43 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
aux = 89 ; System.out.println ( "Apilando elemento: " + aux ) ;
pila.apilar ( aux ) ;
System.out.println ( ) ;
aux = pila.desapilar() ;
System.out.println ( "Desapilando elemento: " + aux ) ;
aux = pila.desapilar() ;
System.out.println ( "Desapilando elemento: " + aux ) ;
aux = pila.desapilar() ;
System.out.println ( "Desapilando elemento: " + aux ) ;
4
Java
if ( pila.estaLlena() )
{
System.out.println ( "\nLa pila esta llena\n" ) ;
}
System.out.println ( ) ;
Apilando elemento: 23
Apilando elemento: -45
Apilando elemento: -12
Apilando elemento: 67
Apilando elemento: 1
Apilando elemento: 0
Apilando elemento: -43
Apilando elemento: 89
Desapilando elemento: 89
Desapilando elemento: -43
Desapilando elemento: 0
5
Java
Cima: 1