ifilsf
C IFILSF SOURCE CHAT 05/01/13 00:32:54 5004 C************************************************************************** C************************************************************************** C**************************** *************************** c************************ IFILSFRE *********************** c**************************** *************************** C************************************************************************** C************************************************************************** C IFILS FREres. C cree une "arborescence" a partir de la racine, de gd, C de l'ordre d'elimination des noeuds. * IFILS,IFRERE,RACINE,NBENS) IMPLICIT INTEGER(I-N) SEGMENT MPVOIS(0),MVOIS(0) SEGMENT IORDRE(0) INTEGER COMPT,RACINE SEGMENT IFILS(0),IFRERE(0) LOGICAL B,B2,BOOL INTEGER NOEUD,R,PERE,Y,FILLE SEGMENT IENS(NBENS) SEGINI IENS C construction de l'arbre DO 10 I=1,NBENS IFRERE(I)=0 IFILS(I)=0 10 CONTINUE C chaque noeud n'a ni fils, ni frere. RACINE=IORDRE(COMPT) C la racine est toujours le dernier noeud elimine C car il n'a pas de pere. DO 200 I=1,COMPT-1 C noeud est dans l'ancienne numerotation. L=0 C B2 est vrai si le voisin de NOEUD possede un nouveau C numero superieur au nouveau numero de NOEUD. IF (B2) THEN L=L+1 IENS(L)=MVOIS(J) C si b2 vrai, alors le voisin considere est un pere C possible. ENDIF 220 CONTINUE PERE=IENS(1) C PERE est initialise a IENS(1) DO 230 J=2,L B=(IORDRE(IENS(J)+NBENS).LT.IORDRE(PERE+NBENS)) IF(B) PERE=IENS(J) C s'il existe un element de ens ayant un nouveau numero C inferieur a celui de pere alors il devient le veritable C pere(l'autre n'est qu'un grand pere). C pere est dans l'ancienne numerotation. 230 CONTINUE FILLE=IFILS(PERE) IF (FILLE.EQ.0) THEN C s'il n'existe pas d'autre fils de pere,alors C noeud n'a pas de frere. ELSE C si pere a un autre fils que noeud, 240 IF(IFRERE(FILLE).EQ.0) THEN C et si cet autre fils n'a pas de frere,noeud devient C ce frere. ELSE C sinon on prend le frere de cet autre fils du pere, C on recherche si lui-meme a un frere jusqu'a aboutir C a ne plus avoir de frere,et on met noeud a cette C position. FILLE=IFRERE(FILLE) GOTO 240 ENDIF ENDIF 200 CONTINUE SEGSUP IENS RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales