Logo Studenta

ZCOLA vehiculo

¡Este material tiene más páginas!

Vista previa del material en texto

COLAS
DEFINICIÓN DE UNA COLA
Es una estructura de datos (TDA) caracterizado por:
Es lineal
Todos los elementos tienen el mismo tipo de dato
Se tiene acceso a los extremos FRENTE y FIN:
Se puede ver el elemento de la FRENTE
Se puede eliminar el elemento de la FRENTE
Se puede insertar un nuevo elemento por la FIN
OPERACIONES PERMITIDAS EN UNA COLA
VER EL ELEMENTO DE LA FRENTE
ELIMINAR EL ELEMENTO DE LA FRENTE
INSERTAR UN ELEMENTO POR EL FIN
VERIFICAR SI LA COLA ESTÁ VACÍA
VERIFICAR SI LA COLA ESTÁ LLENA (SI PUEDE LLENARSE)
IMPLEMENTACIÓN DE UNA COLA
UNA COLA PUEDE REPRESENTARSE MEDIANTE:
UN VECTOR
UNA LISTA ENLAZADA
IMPLEMENTACION DE UNA COLA CON UN VECTOR
	*	5	10			
LA CLASE COLA TIENE DOS CAMPOS:
1 VECTOR ELEM, DONDE ESTAN LOS ELEMENTOS DE LA COLA
 ELEM
 1 2 3 4 . . . . . MAX
2 FRENTE (ENTERO) QUE CONTIENE LA POSICIÓN DEL ELEMENTO DEL FRENTE Y FIN LA DEL ELEMENTO DEL FIN
 FRENTE FIN
	1
	3
Definir una Cola de objetos de la clase Vehículo
Leer N elementos
Mostrar
Contar el número de vehículos de una marca dada
COLA 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 COLA
public class Cola 
{ // CAMPOS
	int frente, fin; 
	Vehiculo [] elem; 
	final int MAX = 50 ; 
	// CONSTRUCTOR POR DEFECTO
	public Cola ()
	{	frente = fin = MAX;
		elem=new String [MAX+1];
	}
CLASE COLA
// VERIFICAR SI LA COLA ESTÁ VACÍA frente = fin 
	public boolean colaVacia()
	{	return frente == fin ; 	}
// VERIFICAR SI LA COLA ESTÁ LLENA
// frente EN POSICION SIGUIENTE A fin
	public boolean colaLlena ()
	{	int sigfin; 
		if (fin == MAX)sigfin=1;
		else sigfin= fin+1;
		return sigfin == frente ; 
	}
CLASE COLA
// VER EL ELEMENTO DEL FRENTE
	public Vehiculo ver ()
	{	if (frente == MAX) return elem[1];
		else return elem[frente +1];
	}
	// ELIMINAR EL ELEMENTO DEL FRENTE
	public void eliminar ()
	{ if ( !colaVacia() ) { // COLA NO VACIA
 //DESPLAZAR frente A POSICION ANTERIOR
	 if (frente == MAX)frente=1;
		 else ++frente ; 
	} }
CLASE COLA
// INSERTAR UN ELEMENTO POR EL FIN
 public void insertar (Vehiculo x )
 { if ( !colaLlena() { // COLA NO LLENA
 //DESPLAZAR fin A LA SIGUIENTE POSICION 
 if (fin == MAX) {	fin= 1 ; } 
	else { ++fin; } 
 // INSERTAR EL NUEVO ELEMENTO	 
 elem[fin]=x;
	 }
 }
} // FINAL DE LA CLASE COLA
CLASE OPERACIONES
class Operaciones {
// INSERTAR N ELEMENTOS
public Cola insertarN(Cola co)
{	System.out.print("Nº de elementos= ");
	int n=Leer.datoInt();
	Vehiculo d;
	for(int c=1;c<=n && !co.colaLlena();++c)
	{System.out.print("Dato"+c+"= ");
	d=new Vehiculo();
 d.leer();
	co.insertar(d);
}
return co;
}
CLASE OPERACIONES
// MOSTRAR
public Cola mostrar(Cola co)
{	Cola caux=new Cola(); // SE CREA UNA COLA AUXILIAR VACIA: caux
 caux.frente=co.frente;
 caux.fin = co.frente;
	Vehiculo d;
	while(!co.colaVacia())
	{ // SE RECUPERA EL ELEMENTO DE LA FRENTE DE LA COLA co Y SE LO MUESTRA
 d=co.ver();
	d.mostrar();
	co.eliminar(); // SE ELIMINA EL ELEMENTO DE LA FRENTE DE co
	caux.insertar(d); // SE INSERTA EN LA FRENTE DE caux EL ELEMENTO ELIMNADO DE co 
	} // AL FINAL LA COLA co QUEDA VACIA Y caux IGUAL A co ORIGINAL
	}
 return caux;
}
PROBLEMA
DEFINIR LA CLASE COLA, CON OBJETOS DE LA CLASE VEHÍCULO.
INSERTAR N ELEMENTOS
MOSTRAR
CONTAR EL NÚMERO DE VEHÍCULOS DE UN MODELO DADO
ELIMINAR LOS VEHÍCULOS DE UNA MARCA DADA
INSERTAR UN VEHÍCULO AL FRENTE DE LA COLA

Continuar navegando