4- Tablas HashEvaluación
Se trata de diseñar e implementar un TAD para gestionar los vuelos de espera de un aeropuerto que puede abrir hasta P pistas identificadas con un natural. Cada pista sirve para el despegue de aviones a varios destinos asociados a la pista. Tanto los destinos de los aviones que salen del aeropuerto como los vuelos se identifican con una cadena.

También sabemos que:

  • Hay muchos destinos y estos se conocen a priori.
  • Puede haber muchos vuelos en espera.
  • Hay pocas pistas asociadas a cada destino.
Las operaciones del TAD son las siguientes:
crea: listacadenas --> aeropuerto
{crea la estructura con los destinos dados}
parcial abre: aeropuerto listacadenas --> aeropuerto
{abre una pista y la asocia a los destinos dados. Las pistas se abren empezando por la 1 y después de la pista i se abre la i+1. Sólo está definida si aún no se han abierto las P pistas.}
parcial asignaPista: aeropuerto cadena cadena --> aeropuerto
{asignapista(a,v,d) asigna al vuelo v una pista válida para despegar con destino d. El vuelo queda en espera. La pista asignada es aquella que tiene menos vuelos en espera (cualquiera en caso de empate) de entre las que están asociadas al destino. Sólo está definida si el vuelo no existía, el destino está en la lista de destinos y hay alguna pista asociada al destino.}
parcial despega: aeropuerto natural --> aeropuerto
{despega(a,n) elimina el vuelo que lleva más tiempo esperando en la pista n. Sólo está definido si n está abierta y tiene algún vuelo en espera.}
parcial cuántosDelante: aeropuerto cadena --> natural
{cuántosDelante(a,v) nos dice cuántos vuelos hay esperando delante de v en la misma pista. Sólo está definida si el vuelo existe.}


Se pide:

  • Especificar algebraicamente el TAD descrito.
  • Dar una implementación del mismo que favorezca la eficiencia de todas las operaciones y optimice el uso de memoria.
 


  E.Mayordomo y K. Urzelai 
elvira at posta.unizar.es
karmelo at posta.unizar.es

Fecha de actualización: 4-9-01