Logo Studenta

PILAS vehiculo

¡Este material tiene más páginas!

Vista previa del material en texto

PILAS
DEFINICIÓN DE UNA PILA
Es una estructura de datos (TDA) caracterizado por:
Es lineal
Todos los elementos tienen el mismo tipo de dato
Se tiene acceso solo al extremo denominado CIMA:
Se puede ver el elemento de la CIMA
Se puede eliminar el elemento de la CIMA
Se puede insertar un nuevo elemento por la CIMA
OPERACIONES PERMITIDAS EN UNA PILA
VER EL ELEMENTO DE LA CIMA
ELIMINAR EL ELEMENTO DE LA CIMA
INSERTAR UN ELEMENTO POR LA CIMA
VERIFICAR SI LA PILA ESTÁ VACÍA
VERIFICAR SI LA PILA ESTÁ LLENA (SI PUEDE LLENARSE)
IMPLEMENTACIÓN DE UNA PILA
UNA PILA PUEDE REPRESENTARSE MEDIANTE:
UN VECTOR
UNA LISTA ENLAZADA
IMPLEMENTACION DE UNA PILA CON UN VECTOR
	20	5	10			
LA CLASE PILA TIENE DOS CAMPOS:
1 VECTOR ELEM, DONDE ESTAN LOS ELEMENTOS DE LA PILA
 ELEM
 1 2 3 4 . . . . . MAX
2 CIMA (ENTERO) QUE CONTIENE LA POSICIÓN DEL ELEMENTO DE LA CIMA
 CIMA
	3
Definir una Pila de objetos de la clase Vehículo
Leer N elementos
Mostrar
Contar el número de vehículos de una marca dada
PILA DE OBJETOS
	Vehiculo
	placa
marca
Modelo
	leer()
mostrar()
	Operaciones
	
	leer(p)
mostrar(p)
contarMarca(p)
class Vehiculo { 
String placa,marca;
int modelo;
public Vehiculo() 
{placa=null; marca=null; modelo=0; }
public void leer() 
 {	System.out.print("placa=");
	placa=Leer.dato();
	System.out.print("marca=");
	marca=Leer.dato();
	System.out.print("modelo=");
	modelo=Leer.datoInt(); }
public void mostrar() 
{ System.out.print("placa="+placa+ "\n marca="+marca +"\n modelo="+modelo); }
}
CLASE PILA
class Pila {
// campos
int cima;
Vehiculo[] elem;
final int MAX=50;
// constructor
public Pila ()
{ cima=0;
 elem = new Vehiculo[MAX + 1];
}
// verifica si la pila está vacía
public boolean pilaVacia()
{ return cima==0; }
CLASE PILA
// verifica si la pila está llena
public boolean pilaLlena()
{ return cima==MAX; }
// ver el elemento de la CIMA
public Vehiculo ver ()
{ return elem[cima]; }
// eliminar el elemento de la CIMA
public void eliminar()
{ if (!pilaVacia() ) {cima = cima - 1; }
}
// insertar un elemento por la CIMA
public void insertar (Vehiculo x)
{ if (!pilaLlena() ) { cima = cima + 1;
 elem[cima] = x; }
 } }
CLASE OPERACIONES
class Operaciones {
// INSERTAR N ELEMENTOS
public Pila insertarN(Pila p)
{	System.out.print("Nº de elementos= ");
	int n=Leer.datoInt();
	Vehiculo d;
	for(int c=1;c<=n && !p.pilaLlena();++c)
	{System.out.print("Dato"+c+"= ");
	d=new Vehiculo();
 d.leer();
	p.insertar(d);
}
return p;
}
CLASE OPERACIONES
// MOSTRAR
public void mostrar(Pila p)
{ Pila paux=new Pila(); // SE CREA UNA PILA AUXILIAR VACIA: paux
 Vehiculo d;
 while(!p.pilaVacia()) {
 // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA p Y SE LO MUESTRA
 d=p.ver();
 d.mostrar();
 p.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE p
 paux.insertar(d); // SE INSERTA EN LA CIMA DE paux EL ELEMENTO ELIMNADO DE p 
 } 
// AL FINAL LA PILA p QUEDA VACIA Y paux CON LOS ELEMENTOS DE p, INVERTIDOS
CLASE OPERACIONES
// SE VACIAN LOS ELEMENTOS DE paux EN p, QUEDANDO COMO ESTABAN ORIGINALMENTE
	while(!paux.pilaVacia())
	{d=paux.ver(); // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA paux
	paux.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE paux
	p.insertar(d); // SE INSERTA EN LA CIMA DE p EL ELEMENTO ELIMNADO DE paux 
	}
}
CLASE OPERACIONES
// CONTAR EL NÚMERO DE VEHÍCULOS DE UNA MARCA DADA
public void contarMarca(Pila p)
{ System.out.println("marca="); 
 String ma=Leer.dato();
 Pila paux=new Pila(); // SE CREA UNA PILA AUXILIAR VACIA: paux
 Vehiculo d; int c=0;
 while(!p.pilaVacia()) {
 // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA p SE CUENTA
 d=p.ver();
 if ( ma.compareTo(d) ==0 ) ++c;
 p.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE p
 paux.insertar(d); // SE INSERTA EN LA CIMA DE paux EL ELEMENTO ELIMNADO DE p 
 } // LA PILA p QUEDA VACIA Y paux CON LOS ELEMENTOS DE p INVERTIDOS
CLASE OPERACIONES
// SE VACIAN LOS ELEMENTOS DE paux EN p, QUEDANDO COMO ESTABAN ORIGINALMENTE
	while(!paux.pilaVacia())
	{d=paux.ver(); // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA paux
	paux.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE paux
	p.insertar(d); // SE INSERTA EN LA CIMA DE p EL ELEMENTO ELIMNADO DE paux 
	}
 System.out.println(“No. Vehículos de la marca “+ma+” = “+c); 
 }
}
public class principal{
public static void main (String[] args) 
{ Operaciones op=new Operaciones();
 Pila pil = new Pila ( ) ;
 op.insertarN (pil);
 op.mostrar (pil);
 op.contarMarca( pil);
 }
}
PROBLEMAS
2. DEFINIR UNA PILA DE OBJETOS DE LA CLASE Vehículo
INSERTAR N NODOS
MOSTRAR
CONTAR EL NUMERO DE VEHICULOS QUE TIENEN EL MODELO MÁS ANTIGUO
ELIMINAR LOS VEHICULOS DE UNA MARCA DADA CON MODELO ANTERIOR A 1990
INSERTAR UN NUEVO VEHÍCULO DESPUÉS DE UN VEHÍCULO CON UNA PLACA DADA

Otros materiales