Java - PilaEstatica

   
Vista:

PilaEstatica

Publicado por Mau_ProgramadorDeDios mau_100@hotmail.es (4 intervenciones) el 25/06/2011 21:25:34
Hola , bueno Tengo mi clase pila estatica,quiero saber si los metodos estan bien ....especialmente el desapilar.....y como defino a la Variable Max como static final??

Cualquier ayuda, sugerencia,comentario, se agradece, muchas gracias





public class PilaArreglo {


private Object[] arreglo;
private int tope;
private int MAX=10; // maximo numero de elementos en la pila
//private int size;
public PilaArreglo()
{
arreglo=new Object[MAX];
tope=-1; // inicialmente la pila esta vac�a
//this.size=0;
}
public void setMaximoPila(int Maximo){
MAX=Maximo;

}
public int getMaximoPila(){
return this.MAX;

}


/*
public void apilar(TipoElemento elem) throws ErrorTda{
if (this.cant < this.max) {
this.pila[this.cant] = elem;
this.cant++;
}
else
throw new ErrorTda(7); // pila llena
*/
public void apilar(Object x)throws ErrorTda{
if (tope+1<MAX) // si esta llena se produce OVERFLOW
{
tope++;
arreglo[tope]=x;
}
else
throw new ErrorTda(7);

}
public void desapilar()throws ErrorTda
{
if (!estaVacia()) // si esta vacia se produce UNDERFLOW
{

tope--;

}
else
throw new ErrorTda(8);
}


/*
public void desapilar()throws ErrorTda{
if (!estaVacia())
{
tope--;
}
else throw new ErrorTda(8);
}
*/
//Devuelve el elemento que se encuentra en el tope de la pila
public Object tope()throws ErrorTda{
if (!estaVacia()) {

Object x=arreglo[tope];
return x;
}
else
throw new ErrorTda(8);
}



public boolean estaVacia()
{
if (tope==-1)
{
return true;
}
else
{
return false;
}


}


public void mostrarPila(){


int i=0;

while(i<tope+1){
System.out.println(arreglo[i]);
i++;

}
}





/*El inconveniente de esta implementaci&#65533;n es que es necesario fijar
* de antemano el n&#65533;mero m&#65533;ximo de elementos que puede contener la pila,
* MAX_ELEM, y por lo tanto al apilar un elemento es necesario controlar
* que no se inserte un elemento si la pila esta llena. Sin embargo,
* en Java es posible solucionar este problema creando un nuevo arreglo
* m&#65533;s grande que el anterior, el doble por ejemplo, y copiando los
* elementos de un arreglo a otro:
*/


public void apilar1(Object x)throws ErrorTda{
if (tope+1<MAX) // si esta llena se produce OVERFLOW
{
tope++;
arreglo[tope]=x;
}
else
{

MAX=MAX*2;
Object[] nuevo_arreglo=new Object[MAX];
for (int i=0; i<arreglo.length; i++)
{
nuevo_arreglo[i]=arreglo[i];

}
tope++;
nuevo_arreglo[tope]=x;
arreglo=nuevo_arreglo;
}



}}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder