Pilas: Pila Estatica
Pilas: Pila Estatica
Pilas: Pila Estatica
PILAS
La pila es una estructura que se basa en el concepto LIFO: Last In First Out, es decir, el
último elemento que entra es el primero que sale.
Pila Estatica
Se realiza por medio de un array. Se insertan datos hasta su tope máximo y a medida que se van
sacando elementos se setean en cero los elementos del array ya utilizados.
import java.util.Scanner;
En una pila tenemos un método que agrega un nodo a la pila y otro que elimina el último nodo
ingresado. Cada nodo insertado en la pila será una instancia de la clase Nodo
Tipos de datos Abstractos
public Pila(){
tope=null;
}
aux=this.tope;
if(aux==null)
return 0;
tope=aux.getSiguiente();
Info=aux.getValor();
aux=null;
return Info;
}
while(tope!=null){
aux=this.tope;
tope=aux.getSiguiente();
aux=null;
}
}
}
while(!pila.EstaVacia())
Tipos de datos Abstractos
{
System.out.println(pila.Sacar());
}
pila.Poner(11);
pila.Poner(2);
System.out.println(pila.EstaVacia());
pila.Vaciar();
System.out.println(pila.EstaVacia());
}
Ejercicio:
Hacer una pila de nodos que contenga objetos de la clase Persona, con atributos nombre y edad.
El programa debe cargar hasta que la edad sea cero. Mostrar todos los elementos de la pila.
public class Persona {
private int edad;
private String nombre;
private Persona siguiente;
public Pila(){
tope=null;
}
if(aux==null)
return null;
p=aux;
tope=aux.getSiguiente();
aux=null;
return p;
}
Tipos de datos Abstractos
while(tope!=null){
aux=this.tope;
tope=aux.getSiguiente();
aux=null;
}
}
}
import java.util.Scanner;
while(!pila.EstaVacia())
{
Persona p = pila.Sacar();
System.out.println(p.getNombre()+" "+p.getEdad());
}
}
}
COLAS
La cola es una estructura que se basa en el concepto FIFO: First In First Out, es decir, el
primer elemento que entra es el primero que sale.
Cola Estatica
Se realiza por medio de un array. Se insertan datos hasta su bit de fin máximo y a medida que
se van sacando elementos se setean en cero los elementos del array ya utilizados. Van saliendo
los primeros en ingresar a la cola.
import java.util.Scanner;
la cola y elimina el
nodo.
EstaVacia() Boolean Ninguno Retorna true si está
vacía, sino false
Vaciar() void Ninguno Remueve todos los
nodos de la pila
public Cola(){
inicio=null;
termino=null;
}
public void insertar(int dato){
Nodo i=new Nodo(dato);
if(inicio==null && termino==null){
inicio=i;
termino=i;
}
termino.setNext(i);
termino = termino.getNext();
}
}
else{
vacia=false;
}
return vacia;
}
}
while(!c.estaVacia()){
System.out.println(c.extraer());
}
}
}
Ejercicio:
Hacer una Cola de nodos que contenga objetos de la clase Persona, con atributos nombre y
edad. El programa debe cargar hasta que la edad sea cero. Mostrar todos los elementos de la
pila.
public Cola() {
primero = null;
ultimo = null;
tamanio = 0;
}
if (isEmpty()) {
return null;
}
return primero;
}
vacia=true;
}
else{
vacia=false;
}
return vacia;
}
import java.util.Scanner;
while(edad !=0){
System.out.println("Ingrese Nombre: ");
nombre = sc.next();
cola.insertar(edad, nombre);
Persona p;
while(!cola.estaVacia()){
p=cola.extraer();
System.out.println(p.getNombre()+" "+p.getEdad());
}
}
}
Tipos de datos Abstractos
Guia de ejercicios:
1) Hacer una pila estatica de objetos tipo Persona, con nombre y edad
2) Hacer una cola estatica de objetos tipo Persona, con nombre y edad
3) Hacer una pila con un arraylist de cinco nombres ingresados a mano
4) Hacer una cola con un arraylist de cinco nombres ingresados a mano
5) Hacer una pila dinámica de objetos de bicicleta de distintos tipos(carrera, paseo, mountainbike)
partiendo de una clase abstracta Bicicleta.
6) Hacer una cola dinámica de objetos de especialistas médicos(pediadtra, gastroenterólogo, clinico),
partiendo de una clase abstracta Medico.
1) Hacer una pila estatica de objetos tipo Persona, con nombre y edad.
public class Persona {
int edad;
String nombre;
retorno=pila1[tope];
pila1[tope]=null;
tope--;
return retorno;
}
public boolean PilaLlena(){
return tope==pila1.length-1;
}
import java.util.Scanner;
while(!p.PilaLlena()){
System.out.println("ingrese nombre");
nombre = sc.next();
System.out.println("ingrese edad");
edad = sc.nextInt();
import java.util.ArrayList;
import java.util.Scanner;
5) Hacer una pila dinámica de objetos de bicicleta de distintos tipos(carrera, paseo, mountainbike)
partiendo de una clase abstracta Bicicleta.
}
public void setPesocuadro(int pesocuadro) {
this.pesocuadro = pesocuadro;
}
@Override
public String getMarcha(){
return "rapida";
}
}
@Override
public String getMarcha(){
return "lenta";
}
}
this.capacidadAmortiguacion=cap;
}
@Override
public String getMarcha(){
return "media";
}
}
public Pila(){
tope=null;
}
if(aux==null)
return null;
p=aux;
tope=aux.getSiguiente();
aux=null;
return p;
}
while(tope!=null){
aux=this.tope;
tope=aux.getSiguiente();
aux=null;
Tipos de datos Abstractos
}
}
}
while(!pila.EstaVacia())
{
Bicicleta p = pila.Sacar();
if(p.getClass().getName()=="BicicletaPaseo"){
System.out.println(p.getColor()+" "+p.getPesocuadro()+" "+
((BicicletaPaseo)p).getCapacidadCanasta()+" "+((BicicletaPaseo)p).getMarcha());
}
if(p.getClass().getName()=="BicicletaCarrera"){
System.out.println(p.getColor()+" "+p.getPesocuadro()+" "+
((BicicletaCarrera)p).getCapacidadCantimplora()+" "+
((BicicletaCarrera)p).getMarcha());
}
if(p.getClass().getName()=="BicicletaMountain"){
System.out.println(p.getColor()+" "+p.getPesocuadro()+" "+
((BicicletaMountain)p).getCapacidadAmortiguacion()+" "+
((BicicletaMountain)p).getMarcha());
}
}
}
}