style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

cual es la salida del siguiente segmento de codigo?????

alguien podria ayudarme!!!!! en estos dias me he dedicado a leer algo sobre pilas y colas, me encontre por ahi un problemita sobre pilas pero como aun estoy introduciendome al tema de pilas no entiendo muy bien.. les posteo el codigo...

Pila p = new Pila();
int x=4;
p.push(x);
System.out.Println("\n" + p.top());
y = p.pop();
p.push(32);
p.push(p.pop());
do{
System.out.println("\n"+ p.pop());
}while(!p.isEmpty());

-----------------------------------------------------------------------------------
por lo que tengo entendido push se utiliza para agregar un elemento a la pila, y pop para remover un elemento de la pila, isEmpty nos dice la pila esta vacia... pero no se para que se utiliza top??????

me gustaria que me explicaran como cual seria el funcionamiento basico del segmento de codigo... ya que supuestamente donde encontre el problema dice buscar cual es la salida del segmento de codigo tomando en cuenta que el elemento es de tipo int?????

no se si me doy a entender....!!!

de lo poco que entiendo es que se inicializa una variable de tipo int con el valor de 4, a la pila ya instanciada se le agrega el elemento x=4, se manda a escribir en consola pero es lo que no entiendo muy bien que se manda a imprimir, y a la variable Y (no se si eso se puede o es un error en el codigo de que se le asigna el poder quitarle un elemento a la pila).... despues en ""p.push(p.pop());"" se le agrega o se le quita un elemento no entiendo.... y en el ciblo mientreas la pila no este vacia se le va quitanto los elementos.... eso entendi pero aun me pierdon con lo que supuestamente es la salida del segmento de codigo... si alguien pudiera explicarme como funciona y cual seria la salida del codigo les estaria muy agradecidos porque he estado quemando neuronas en este codigo!!!! Gracias de antemano por su tiempo.. espero puedan enterderme porque io creo que hago mas grande el problema de lo que realmente es... weno en pocas palabras no puedo explicarme...heheheheheGracias y exitos!!!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ArenasMx

Error?

segun lo que dices el metodo push mete un valor a la pila y tiene un argumento de entrada que es un entero, cuatro lineas mas abajo intentas hacer un push pero con agumento de entrada es un metodo  p.push(p.pop()); y por lo que veo este metodo no regresa nungun valor por lo que marcaria error cuando lo intentes compilar.... espero que sea lo suficientemete claro

Sugerencia usa las etiquetas code /code

 Pila p = new Pila();
int x=4;
p.push(x);
System.out.Println("\n" + p.top());
y = p.pop();
p.push(32);
p.push(p.pop());
do{
System.out.println("\n"+ p.pop());
}while(!p.isEmpty());

para tu código

@Pronovato: top, es

@Pronovato: top, es generalmente una funcion que regresa el valor que está hasta "arriba" ( top ) de la pila, y que es el único visible ( imagina una pila de tortillas, solamente puedes sacar la de hasta arriba, "top" te muestra cual es, sin sacarla )

Lo de la y sería un error en Java, por que no está declarada, si fuera:

int y = p.pop();

No habría problema por que estariamos declarandola e inicializandola

Con p.push( p.pop() ); lo que se está haciendo es sacar un elemento ( p.pop() ) y luego meterlo, claro es es valido, no hay razón para que no lo fuera, sería igua a escribir:

int z = p.pop();
p.push( z );

Entonces:

Pila p = new Pila(); // inicializa la pila
int x=4;       // crea una variable x de tipo int con valor 4
p.push(x);    // mete a x en la pila ( ahora p = [4] )
System.out.Println("\n" + p.top()); // imprime el valor de hasta arriba en la pila ( como p = [4] , entonces top = 4 )
y = p.pop();     // saca el 4 y lo asigna a y, que como no está declarada resulta en un error de compilacion
// asumiendo un error de dedo digamos que es: int y = p.pop();
// entonces la pila quedaría vacia p = []
p.push(32);                // mete el numero 32 a la pila: p = [32]
p.push(p.pop());           // saca el 32 y lo vuelve a meter : p = [32]
do{
    System.out.println("\n"+ p.pop()); // imprime el elemento que saca de la pila ( o sea el 32  y deja la pila vacía  p=[] )
} while(!p.isEmpty());   // como ya quedó vacia termina el ciclo

( ouch creo que quedo formateado feo, pero se entiende )

Preguntas?

Todo Claro OscarRyz y ArenasMx!!!!! Gracias

Gracias OscarRyz todo me a quedado muxo mas claro, me perdia donde se y = p.pop(); porque no sabia si eso se podia hacer y ps ahora que me lo explicaste ps si esta claro que si se le asigna el valor que se extrae y no esta declarada la variable seria un error de compilacion... me quedo muy claro Gracias por la Ayuda igualmente a "ArenasMx" Gracias por la Ayuda me a servido de mucho ya que ps estoy introduciendome a algo nuevo y ps siempre al principio todo se torna gris y no se ven claras las cosas...hehehehehe.. Gracias por Todo =0)

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">