-- AUTOR: Elvira Mayordomo Cámara
-- PROYECTO: módulo de declaración del
-- TAD tablas hash encadenadas
-- FICHERO: tablasencadena.ads
-- FECHA: 14-12-02
-- Especificación tablasGenéricas en fichero aparte
generic
type tpClave is private;
type tpValor is private;
max: positive; -- usad tpValores de max que sean primos
with function h(c:tpClave;tam:positive) return integer;
-- h(c,max) devuelve un número entre 0 y max-1
package tablasencadena is
type tabla is private;
-- coste en memoria: una tabla de n datos
-- ocupa O(max+n)
-- los coste en tiempos de las operaciones sólo están
-- garantizados si n<=max
procedure tablavacia(t:out tabla);
-- Post: t=crearVacía
-- coste en tiempo O(max)
function esta(t:tabla; c:tpClave) return boolean;
-- Post: esta(t,c)=está(t,c)
-- coste en tiempo O(1) en media
procedure modificar(t:in out tabla; c:in tpClave; v: in tpValor);
-- Pre: t=t0
-- Post: t=añadir(t0,c,v)
-- coste en tiempo O(1) en media
function consultar(t:tabla; c:tpClave) return tpValor;
-- Pre: está(t,c)
-- Post: consulta(t,c)=elValor(t,c)
-- coste en tiempo O(1) en media
procedure borrar(t:in out tabla; c:in tpClave);
-- Pre: t=t0
-- Post: t=borrar(t0,c,v)
-- coste en tiempo O(1) en media
private
type nodo;
type ptNodo is access nodo;
type nodo is
record
laClave:tpClave;
elValor:tpValor;
sig:ptNodo;
end record;
type tabla is array (integer range 0..max-1) of ptNodo;
end tablasencadena;
syntax highlighted by Code2HTML, v. 0.9.1