I1M-0.1.0: Code for the Haskell course taught at the University of Seville.
LicenseCreative Commons
MaintainerJosé A. Alonso
Safe HaskellSafe-Inferred
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

Instances details
Ord a => Eq (CPrioridad a) Source # 
Instance details

Defined in I1M.ColaDePrioridad

Methods

(==) :: CPrioridad a -> CPrioridad a -> Bool #

(/=) :: CPrioridad a -> CPrioridad a -> Bool #

Show a => Show (CPrioridad a) Source # 
Instance details

Defined in I1M.ColaDePrioridad

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.