Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

INSTITUTO TECNOLOGICO DE ZACATEPEC

DEPARTAMENTO DE SISTEMAS Y COMPUTACIÒN


ESTRUCTURA DE DATOS
TEMA 3 ESTRUCTURAS LINEALES
3.1 PILAS

Clase Nodo

Esta es la clase Nodo que tiene


dos atributos uno info de tipo
entero y un sig de tipo Nodo
porque va apuntar a otro Nodo

Aquí en la clase Pila se encuentran los métodos de insertar(push) en la pila y sacar un elemento de la pila (pop)

Aquí se pide el valor que en este ejemplo se da a la variable valor el 8.


Se manda a llamar al método push que inserta el valor de 8 a la pila,
al inicio como se puede observar la pila esta vacía
P

como se ve ya se creo el nodo p donde en el campo info tiene


el valor de 8 y en el campo siguiente apunta a null.
Cuando se dice que p.sig=pila es decir p.sig ->pila y como pila
la primera vez apunta a null(nada) y después se dice pila=p
entonces pila ahora esta donde esta p y quedaría a así.
Pila
p

cómo se puede observar pila está en p.

Aquí el método principal main que que tiene un ciclo do..while donde dentro se pide un valor y se manda a
llamar a push. Como se puede observar se crea una instancia de la clase Pila su instancia es pila. Se puede
observar que clase Pila empieza con mayusculas y el objeto pila es con minusculas así es que cada ves que se
necesite el métos push o pop o cualquier método mas que tenga la clase Pila debe ser pila.push(valor) para
insertar.
Ahora como se puedo ver se inserto un el elemento a la pila que ahora tiene el 8 en el método main se anexa
una estructura do.. while para estar nuevamente insertando valores a la pila mientras si el valor dado es 0 se
termina de insertar mas valores a la pila. Podría realizarse con cualquiera estructura de control repetitiva.
Pila

Ahora a la variable valor se le da 1 se manda a llamar el método push(valor) donde valor


ahora es 1 para insertarse el 1 a la pila, es por ello que dice p.sig=pila (p en su campo
siguiente apunta a pila) y en la siguiente instrucción pila =p; porque pila se pasa a donde
esta p, ahora pila va estar en 1.
p pila

como se puede observar el tope de la pila es 1;

despues se da el valor de 3 se vuelve a mandar a llamar a push con el valor 3 a


insertar y pila pasa ahora a 3 y el tope de la pila es 3, despues se pide otro valor es 2 se
manda a llamar a push para insertar el valor de 2 a la pila, ahora pila se pasa a p que fue
el nodo que se creo con el valor de 2 en su campo info y por ultimo se inserta 5

Pila

El método pop saca de la pila un nodo, es decir elimina un nodo de la pila y el método tope retorna que tiene
el topo de la pila
PROGRAMA COMPLETO DE INSERTA Y SACAR DE LA PILA
import javax.swing.*;
public class Pila {
Nodo pila;
//método que inserta a la pila
public void push(int valor)
{
Nodo p=new Nodo(valor);
p.sig=pila;
pila=p;
}
//método que saca de la pila
public Nodo pop()
{
Nodo x=pila;
pila=pila.sig;
x.sig=null;
return x;
}
//método int topePial()
public int topePila()
{
return pila.info;
}
public boolean pilaVacia()
{
if (pila==null)
return true;
else
return false;
}//fin método
public static void main(String[] args)
{
Pila pila=new Pila();
int valor;
do{
valor=Integer.parseInt(JOptionPane.showInputDialog("Introduce un valor a la pila"));
pila.push(valor);// se inserta el valor dado via teclado a la pila
}while (valor!=0);
//imprimir el contenido de la pila
String cad="Datos de la Pila\n";
Nodo dato;
for (int i = 0; !pila.pilaVacia(); i++) {

dato=pila.pop();
cad=cad+dato.info+"\n";
}
JOptionPane.showMessageDialog(null,cad);
}//fin main
}//fin clase
Método que usa pilas de carácteres Para usar pilas de caracteres es necesario
//MÉTODO QUE RETORNA UNA CADENA tener la siguiente clase Nodo
public class Nodo {
public String convertir(String cad){ int info;
String aux =""; char infoc;
for (int i=0; i<cad.length() ; i++) Nodo sig;
Nodo(int valor){
push(cad.charAt(i)); //aquí se inserta un carácter a la pila info=valor;
while(pilavacia()==false) sig=null;
aux += pop().infoc;//aqui se saca un Carácter de la pila y se }
Nodo(char c){
//concatena en la cadena aux infoc=c;
return aux; //retorna una cadena sig=null;
} }
}

public String binario(int num){


int bin=0;
String x="";
while(num>=1){
if ((num%2)==0)
bin=0;
else
bin=1;
num=num/2;
push(bin);
}

También podría gustarte