Java - Metodo para elimina numeros negatios en una pila.

   
Vista:
Imágen de perfil de Jenny

Metodo para elimina numeros negatios en una pila.

Publicado por Jenny (16 intervenciones) el 25/01/2016 01:39:31
Hola ayuda necesito un metodo para eliminar los numeros negativos en una pila... este es mi programa,,,,, necesito que arroje la pila normal y despues sin los numeros negativos....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Stack num=new Stack();
        num.push(50);
        num.push(20);
        num.push(-2);
        num.push(10);
        num.push(-40);
 
        System.out.println("Su ultimo elemento es: "+num.peek());
        while(num.empty()==false){
 
            System.out.println(num.pop());
}
}
}
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

Metodo para elimina numeros negatios en una pila.

Publicado por Marcelo (47 intervenciones) el 26/01/2016 13:00:16
No me queda del todo claro si requieres los números negativos o no.

De cualquier forma, si no te sirven para nada y realmente quieres eliminarlos. Lo que te recomiendo es que en tu método pop(o en tu caso peek) evalúes si el siguiente elemento es negativo o no, de ser negativo lo descartas y pasas al siguiente (esta lógica continua hasta que encuentres un numero positivo) y lo retornas.

En caso que realmente no quieres eliminarlos, sino saltearlos, te serviría llevar un indice que indica la posicion del primer elemento y al llamar al peek, incrementas ese indice en 1 para saltar al siguiente elemento, si el mismo es negativo le vuelves a sumar 1, en caso contrario devuelves el elemento indicado por el indice.

Se entiende?

Salduos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metodo para elimina numeros negatios en una pila.

Publicado por Marcelo (47 intervenciones) el 26/01/2016 13:09:30
En caso que utilices la clase Stack de java vas a tener que crear una clase que herede de Stack y sobreescribir el metodo pop.

Algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MyStack extends Stack{
 
    @Override
    public Object pop(){
        int valor;
        Object o = null;
        do{
        o = super.pop();
         valor = Integer.parseInt(o.toString());
        }while(valor < 0);
 
        return o;
    }
 
    public MyStack(){
        super();
    }
 
}

Espero sirva y cualquier duda a las ordenes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar