PilaEstatica
Publicado por Mau_ProgramadorDeDios (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�n es que es necesario fijar
* de antemano el n�mero m�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�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;
}
}}
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�n es que es necesario fijar
* de antemano el n�mero m�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�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


0