I1M-0.1.0.0: Código de I1M.

LicenseCreative Commons
MaintainerJosé A. Alonso
Safe HaskellSafe
LanguageHaskell2010

I1M.ColaDePrioridad

Description

TAD (tipo abstracto de datos) de las colas de prioridad.

Este módulo contiene el código del TAD de las colas de prioridad estudiado en el tema 16 del curso.

Synopsis

Documentation

data CPrioridad a Source

Tipo de datos de las colas de prioridad.

Instances

vacia :: Ord a => CPrioridad a Source

vacia es la cola de prioridad vacía. Por ejemplo,

vacia  ==  CP Vacio

inserta :: Ord a => a -> CPrioridad a -> CPrioridad a Source

(inserta x c) añade el elemento x a la cola de prioridad c. Por ejemplo,

ghci> foldr inserta vacia [3,1,7,2,9]
CP (M 1 2 
      (M 2 2 
         (M 9 1 VacioM VacioM) 
         (M 7 1 VacioM VacioM)) 
      (M 3 1 VacioM VacioM))
ghci> inserta 5 (foldr inserta vacia [3,1,7,2,9])
CP (M 1 2 
      (M 2 2 
         (M 9 1 VacioM VacioM) 
         (M 7 1 VacioM VacioM)) 
      (M 3 1 
         (M 5 1 VacioM VacioM) VacioM))

primero :: Ord a => CPrioridad a -> a Source

(primero c) es la cabeza de la cola de prioridad c. Por ejemplo,

primero (foldr inserta vacia [3,1,7,2,9])  ==  1

resto :: Ord a => CPrioridad a -> CPrioridad a Source

(resto c) elimina la cabeza de la cola de prioridad c. Por ejemplo,

ghci> (foldr inserta vacia [3,1,7,2,9])
CP (M 1 2 
      (M 2 2 
         (M 9 1 VacioM VacioM) 
         (M 7 1 VacioM VacioM)) 
      (M 3 1 VacioM VacioM))
ghci> resto (foldr inserta vacia [3,1,7,2,9])
CP (M 2 2 
      (M 9 1 VacioM VacioM) 
      (M 3 1 
         (M 7 1 VacioM VacioM) VacioM))

esVacia :: Ord a => CPrioridad a -> Bool Source

(esVacia c) se verifica si la cola de prioridad c es vacía. Por ejemplo,

esVacia (foldr inserta vacia [3,1,7,2,9])  ==  False
esVacia vacia                              ==  True

valida :: Ord a => CPrioridad a -> Bool Source

(valida c) se verifica si c es una cola de prioridad válida. En la representación mediante montículo todas las colas de prioridad son válidas.