3-
Árboles3.2
Árboles generales
Implementación de árboles generales en ADA (.ads) |
||
type bosque is limited private; procedure creaVacio(b:out bosque); -- Post: b=bVacío procedure anadeDch(b:in out bosque; a:in arbol); -- Pre: b=b0 -- Post: b=+dch(b0,a) -- NO HACE COPIA DE a function long(b:in bosque) return integer; -- Post: long(b)=long(b) procedure observa(b:in bosque; i:in integer; a:out arbol); -- Pre: 1<=i<=long(b) -- Post: a=b[i] -- HACE COPIA function altBosque(b:bosque) return integer; -- Post: altBosque(b)=altBosque(b) procedure enraizar(e:in elemento; b:in bosque; a:out arbol); -- Post: a=enraizar(e,b) -- NO HACE COPIA DE b function raiz(a:arbol) return elemento; -- Post: raiz(a)=raíz(a) procedure subarbol(a:in arbol; i:in integer;sa:out arbol); -- Pre: 1<=i<=numHijosRaiz(a) -- Post: sa=subárbol(a,i) -- HACE COPIA function numHijos(a:arbol) return integer; -- Post: numHijos(a)=numHijosRaiz(a) function esHoja(a:arbol) return boolean; -- Post: esHoja(a)=hoja?(a) function altArbol(a:arbol) return integer; -- Post: altArbol(a)=altÁrbol(a) procedure elBosque(a:in arbol; b:out bosque); -- Guarda en b la lista de subárboles de a. -- No actualiza b.ultimo -- No duplica procedure asignaBosque(nuevo:out bosque; viejo:in bosque); -- Duplica la representación del bosque viejo -- guardándolo en nuevo. procedure liberaBosque(b:in out bosque); -- Libera la memoria dinámica accesible -- desde b, quedando b vacío. procedure asignaArbol(nuevo:out arbol;viejo:in arbol); -- Duplica la representación del árbol viejo -- guardándolo en nuevo. procedure liberaArbol(a:in out arbol); -- Libera la memoria dinámica accesible -- desde a. private
type arbol is access nodo; type nodo is
primogenito,sigHermano:arbol; altura,numHijos:integer;
long,altura:integer; |
||
|
||
E.Mayordomo
y K. Urzelai
elvira at posta.unizar.es karmelo at posta.unizar.es Fecha de actualización: 4-9-01 |