-- AUTOR: Elvira Mayordomo Cámara
-- PROYECTO: módulo de declaración del
-- TAD resultado del examen del 21-1-02
-- sólo con árboles
-- FICHERO: familiasimperiales2.ads
-- FECHA: 28-11-03
with Ada.text_io, Ada.Strings.Unbounded, ustrings;
use Ada.text_io, Ada.Strings.Unbounded, ustrings;
package familiasimperiales2 is
type familia is private;
-- coste en memoria: una familia de n
-- miembros ocupa O(n)
procedure crearfamilia(nombre:in ustring; anyo:in positive; varon: boolean; vivo:
boolean; f:out familia);
-- tiempo O(1)
procedure nacer(nombrep,nombrem,nombre:in ustring; anyo:in positive; varon:in boolean; f:in out familia);
-- tiempo O(n), donde n es el número de miembros
procedure morir(nombre:in ustring; f:in out familia);
-- tiempo lineal O(n), donde n es el número de miembros
procedure borrar(nombre:in ustring; f:in out familia);
-- tiempo lineal O(n), donde n es el número de miembros
procedure linea(f:in familia);
-- Post: Escribe por pantalla la línea de sucesió -- tiempo lineal O(n), donde n es el número de miembros
function esvacia(f:in familia) return boolean;
--O(1)
function emperador(f:in familia) return ustring;
-- Pre: not esvacia(f)
--O(1)
function regente(f:in familia) return ustring;
-- Pre: existe un miembro vivo mayor de edad.
--O(1)
--Se puede hacer muerte O(1) a cambio de que emperador y regente sean O(n)
private
type nodo;
type arbol is access nodo;
type nodo is record
nombre:ustring;
anyo:positive;
esvaron,vivo:boolean;
padre,sighermano,primhijo,primhija,ulthijo,ulthija:arbol;
end record;
type familia is record
raiz,emperador,regente:arbol;
end record;
end familiasimperiales2;
syntax highlighted by Code2HTML, v. 0.9.1