4 años después y mira, casi los 50 mil suscriptores, y lo mejor es que si siguiera subiendo videos estoy seguro que millones lo seguirían ahorita porque es el mejor profe de lejos! :D
Seria un estado actual a lo que te refieres, se haria uso de un pila Aux esa nos servira para no perder los datos retirados, el estado actual de la pila se haria con un while(P.Retira && Aux.Inserta(P.Dr)) creo que en este caso la variable seria cima, P.cima System.out.println(P.Dr) Y luego para volver los elementos a la pila original While(Aux.Retira && P.Inserta(Aux.Dr))
Hola a todos, me pueden ayudar con la ecuacion de la Inversion polaca para este codigo? Por favor. Gracias package polacaPilas; public class polaca { public boolean busca(int x, PilaI fuente) { boolean esta = false; //bandera para saber si x está en fuente PilaI aux = new PilaI(); //Creo una pila auxiliar para pasar temporalmente NodoI n = fuente.pop(); //Extraigo el primer elemento de la pila fuente while (n != null && !esta) { //mientras tenga datos la pila o no lo encuentre esta = (n.getDato() == x); //comparo el x cono lo que saque de la pila aux.push(n); //uso la pila auxiliar para guardar la info temporalmente if (!esta) { //Si no esta pido otro elemento de la pila n = fuente.pop(); } } //vuelo a colocar los elemento en la pila fuente n = aux.pop(); while (n != null) { fuente.push(n); n = aux.pop(); } return esta; } public NodoI extrae(int x, PilaI fuente) { NodoI retorno = null; //Nodo donde retorno PilaI aux = new PilaI(); //Creo una pila auxiliar para pasar temporalmente NodoI n = fuente.pop(); //Extraigo el primer elemento de la pila fuente while (n != null && retorno == null) { //mientras tenga datos la pila o no lo encuentre if (n.getDato() == x) { //comparo el x cono lo que saque de la pila retorno = n; } else { aux.push(n); //uso la pila auxiliar para guardar la info temporalmente n = fuente.pop(); //Si no esta pido otro elemento de la pila } } //vuelo a colocar los elemento en la pila fuente n = aux.pop(); while (n != null) { fuente.push(n); n = aux.pop(); } return retorno; } public PilaI ordena(PilaI fuente) { PilaI ordenada = new PilaI(); PilaI aux = new PilaI(); NodoI mayor = fuente.pop(); while (mayor != null) { NodoI temp = fuente.pop(); while (temp != null) { if (mayor.getDato() > temp.getDato()) { aux.push(temp); } else { aux.push(mayor); mayor = temp; } temp = fuente.pop(); } ordenada.push(mayor); fuente = aux; mayor = fuente.pop(); aux = new PilaI(); } return ordenada; } private boolean esNumero(char c) { return ("1234567890".indexOf("" + c) > -1); } private boolean esOperador(char c) { return ("-+*/".indexOf("" + c) > -1); } public String aPolaca(String polaca) { String v[] = polaca.split(","); polaca = ""; PilaS laPila = new PilaS(); for (String s : v) { if (esNumero(s.charAt(0))) { //Si es un numero lo paso directo a polaca polaca += s + ","; } else if (esOperador(s.charAt(0))) { //Si es operador debo ver si hay algo en Pila y valorar prioridades NodoS dato = laPila.pop(); if (dato == null) { // no habia nada en la pila laPila.push(new NodoS(s)); } else { if (dato.getDato().equals("(")) { laPila.push(dato); laPila.push(new NodoS(s)); } else if ("-+".indexOf(dato.getDato().charAt(0)) >= 0 && "*/".indexOf(s.charAt(0)) >= 0) { laPila.push(dato); laPila.push(new NodoS(s)); } else { polaca += dato.getDato() + ","; laPila.push(new NodoS(s)); } } } else if (s.charAt(0) == '(') { //Si es paréntesis abiero lo pongo en la Pila laPila.push(new NodoS(s)); } else { //definitivamente debe ser un ")".. por lo que se saca todo hasta el "(" NodoS n = laPila.pop(); while (!n.getDato().equals("(")) { polaca += n.getDato() + ","; n = laPila.pop(); } } } NodoS n = laPila.pop(); while (n != null) { polaca += n.getDato() + ","; n = laPila.pop(); } return polaca; } public double evaluaPolaca(String s) { double resultado = 0; String v[] = s.split(","); PilaS pila = new PilaS(); for (String x : v) {
Supongo ya estarás feliz! cuando inicias el video mencionas que lo estarás cuando llegues alrededor de los 50mil subscriptores jaja. Saludos de Argentina! gran aporte a la comunidad universitaria.
es un grande
entendi mucho mejor ahora pilas y listas, gracias, te ganaste otro subscriptor :D
La verdad muchísimas gracias. Este curso me ha servido para reafirmar lo aprendido de la materia de estructura de datos en la uni donde voy.
Cumpa , me pasas el código?
Excelente video amigo me ayudado mucho y explicas muy bueno y enendible ....
57.600 Suscriptores en el julio 2020, Felicitaciones, creo que debe ser mas debido a su excelente forma de enseñar, gracias totales !
4 años después y mira, casi los 50 mil suscriptores, y lo mejor es que si siguiera subiendo videos estoy seguro que millones lo seguirían ahorita porque es el mejor profe de lejos! :D
explicas mejor que mi maestro :D
Exelentes videos. Felicitaciones desde Argentina!!
¿me podria compartir algun metodo para mostrar lo que se almaceno en la pila?
Gracias me fue de gran ayuda. como haria para hacer una pila dinamica que me pida un tamaño maximo de la pila
muy claros tus video...!! gracias !!! estaré pendiente en tus nuevos videos..!! gracias y like
Seria un estado actual a lo que te refieres, se haria uso de un pila Aux esa nos servira para no perder los datos retirados, el estado actual de la pila se haria con un while(P.Retira && Aux.Inserta(P.Dr)) creo que en este caso la variable seria cima, P.cima
System.out.println(P.Dr)
Y luego para volver los elementos a la pila original
While(Aux.Retira && P.Inserta(Aux.Dr))
Como seria el metodo para recorrer la pila y mostrar los elementos
Es lo que ando buscando igual
para mostrar seria
while (!estaVacia())
{
int aux = top.dato;
System.out.println(aux);
top = top.siguiente;
}
Hola a todos, me pueden ayudar con la ecuacion de la Inversion polaca para este codigo? Por favor. Gracias
package polacaPilas;
public class polaca {
public boolean busca(int x, PilaI fuente) {
boolean esta = false; //bandera para saber si x está en fuente
PilaI aux = new PilaI(); //Creo una pila auxiliar para pasar temporalmente
NodoI n = fuente.pop(); //Extraigo el primer elemento de la pila fuente
while (n != null && !esta) { //mientras tenga datos la pila o no lo encuentre
esta = (n.getDato() == x); //comparo el x cono lo que saque de la pila
aux.push(n); //uso la pila auxiliar para guardar la info temporalmente
if (!esta) { //Si no esta pido otro elemento de la pila
n = fuente.pop();
}
}
//vuelo a colocar los elemento en la pila fuente
n = aux.pop();
while (n != null) {
fuente.push(n);
n = aux.pop();
}
return esta;
}
public NodoI extrae(int x, PilaI fuente) {
NodoI retorno = null; //Nodo donde retorno
PilaI aux = new PilaI(); //Creo una pila auxiliar para pasar temporalmente
NodoI n = fuente.pop(); //Extraigo el primer elemento de la pila fuente
while (n != null && retorno == null) { //mientras tenga datos la pila o no lo encuentre
if (n.getDato() == x) { //comparo el x cono lo que saque de la pila
retorno = n;
} else {
aux.push(n); //uso la pila auxiliar para guardar la info temporalmente
n = fuente.pop(); //Si no esta pido otro elemento de la pila
}
}
//vuelo a colocar los elemento en la pila fuente
n = aux.pop();
while (n != null) {
fuente.push(n);
n = aux.pop();
}
return retorno;
}
public PilaI ordena(PilaI fuente) {
PilaI ordenada = new PilaI();
PilaI aux = new PilaI();
NodoI mayor = fuente.pop();
while (mayor != null) {
NodoI temp = fuente.pop();
while (temp != null) {
if (mayor.getDato() > temp.getDato()) {
aux.push(temp);
} else {
aux.push(mayor);
mayor = temp;
}
temp = fuente.pop();
}
ordenada.push(mayor);
fuente = aux;
mayor = fuente.pop();
aux = new PilaI();
}
return ordenada;
}
private boolean esNumero(char c) {
return ("1234567890".indexOf("" + c) > -1);
}
private boolean esOperador(char c) {
return ("-+*/".indexOf("" + c) > -1);
}
public String aPolaca(String polaca) {
String v[] = polaca.split(",");
polaca = "";
PilaS laPila = new PilaS();
for (String s : v) {
if (esNumero(s.charAt(0))) { //Si es un numero lo paso directo a polaca
polaca += s + ",";
} else if (esOperador(s.charAt(0))) { //Si es operador debo ver si hay algo en Pila y valorar prioridades
NodoS dato = laPila.pop();
if (dato == null) { // no habia nada en la pila
laPila.push(new NodoS(s));
} else {
if (dato.getDato().equals("(")) {
laPila.push(dato);
laPila.push(new NodoS(s));
} else if ("-+".indexOf(dato.getDato().charAt(0)) >= 0
&& "*/".indexOf(s.charAt(0)) >= 0) {
laPila.push(dato);
laPila.push(new NodoS(s));
} else {
polaca += dato.getDato() + ",";
laPila.push(new NodoS(s));
}
}
} else if (s.charAt(0) == '(') { //Si es paréntesis abiero lo pongo en la Pila
laPila.push(new NodoS(s));
} else { //definitivamente debe ser un ")".. por lo que se saca todo hasta el "("
NodoS n = laPila.pop();
while (!n.getDato().equals("(")) {
polaca += n.getDato() + ",";
n = laPila.pop();
}
}
}
NodoS n = laPila.pop();
while (n != null) {
polaca += n.getDato() + ",";
n = laPila.pop();
}
return polaca;
}
public double evaluaPolaca(String s) {
double resultado = 0;
String v[] = s.split(",");
PilaS pila = new PilaS();
for (String x : v) {
// Aqui me falta la ecuacion
}
resultado=Double.parseDouble(pila.pop().getDato());
return resultado;
}
}
a
porque nuevo.sig=cima??
Supongo ya estarás feliz! cuando inicias el video mencionas que lo estarás cuando llegues alrededor de los 50mil subscriptores jaja. Saludos de Argentina! gran aporte a la comunidad universitaria.
el mejrrrr...crack
Es muy útil pero el nodo tiene mal el nombre y la semántica confunde, debería llamarse NodoPila no NodoCola, es al principio el error, solo eso.
son 55600 suscriptores
ya van 59 000 jajajaja