3-
Árboles3.2
Árboles generales
Implementación de árboles generales en ADA (.adb) |
||
package body arboles is
procedure creaVacio(b:out bosque) is
b.ultArbol:=null; b.long:=0; b.altura:=-1; procedure anadeDch(b:in out bosque; a:in arbol)
is
b.ultArbol:=a; b.long:=b.long+1; b.altura:=integer'max(b.altura,a.altura); function long(b:in bosque) return integer is
procedure observa(b:in bosque; i:in integer;
a:out arbol) is
for n in 2..i loop
asignaArbol(a,aux); a.sighermano:=null; function altBosque(b:bosque) return integer
is
procedure enraizar(e:in elemento; b:in bosque;
function raiz(a:arbol) return elemento is
procedure subarbol(a:in arbol; i:in integer;
for n in 2..i loop
asignaArbol(sa,aux); sa.sighermano:=null; function numHijos(a:arbol) return integer is
function esHoja(a:arbol) return boolean is
function altArbol(a:arbol) return integer is
procedure elBosque(a:in arbol; b:out bosque)
is
b.long:=a.numHijos; b.altura:=a.altura-1; procedure asignaBosque(nuevo:out bosque;
then
nuevo.primArbol:=auxN; nuevo.long:=viejo.long; nuevo.altura:=viejo.altura; auxV:=viejo.primArbol.sigHermano; while auxV/=null loop
auxV:=auxV.sigHermano; auxN:=auxN.sigHermano; nuevo.ultArbol:=auxN; auxN.sigHermano:=null; procedure liberaBosque(b:in out bosque) is
aux2:=b.primArbol.sigHermano; for i in 1..b.long loop
aux:=aux2; aux2:=aux2.sigHermano; creaVacio(b); procedure asignaArbol(nuevo:out arbol;
baux.long:=viejo.numHijos; baux.altura:=viejo.altura-1; -- asignaBosque no necesita baux.ultArbol asignaBosque(baux2,baux); enraizar(raiz(viejo),baux2,nuevo); procedure liberaArbol(a:in out arbol) is
baux.long:=a.numHijos; baux.altura:=a.altura-1; -- liberaBosque no necesita baux.ultArbol liberaBosque(baux); disponer(a); |
||
|
||
E.Mayordomo
y K. Urzelai
elvira at posta.unizar.es karmelo at posta.unizar.es Fecha de actualización: 4-9-01 |