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.
|