fusion
C FUSION SOURCE CHAT 05/01/13 00:12:38 5004 C************************************************************************** C************************************************************************** C**************************** *************************** c************************ FUSION *********************** c**************************** *************************** C************************************************************************** C************************************************************************** C compare la liste des voisins de NOEUD (noeud elimine) a celle d'un de C ces voisins et associe a ce dernier une nouvelle liste de voisins, C liste de "concatenation"ou de fusion. . IMPLICIT INTEGER(I-N) SEGMENT NPVOIS(0),NVOIS(0) INTEGER NBENS INTEGER NOEUD INTEGER X,Y SEGMENT IFUS(0) SEGMENT NEFFET(NBENS+1) SEGINI NEFFET C on cree une liste memoire des voisins de noeud. NEFFET(1)=1 NEFFET(1)=NEFFET(1)+1 NEFFET(NEFFET(1))=NVOIS(I) 200 CONTINUE C on a range NVOIS par ordre croissant. DO 500 I=2,NEFFET(1) SEGINI IFUS IFUS(**)=0 C fus: liste intermediaire de fusion. X=NEFFET(I) C X : voisin de NOEUD. K=NPVOIS(X) C J decrit la gestion de Noeud et K celle de X. IF(NVOIS(J).EQ.X) THEN C le voisin de Noeud est X.On passe au voisin suivant de Noeud. J=J+1 GOTO 100 ELSE C le voisin de X est Noeud .On passe au voisin suivant de X. K=K+1 GOTO 100 ELSE IF(NVOIS(J).LE.NVOIS(K)) THEN C cas ou le vois de Noeud <= celui de X. IF(NVOIS(J).EQ.NVOIS(K)) THEN K=K+1 C si le voisin de noeud est voisin de X, C on ne le rajoute pas. ENDIF IFUS(1)=IFUS(1)+1 IFUS(**)=NVOIS(J) C sinon,on le met dans Fus. C Fus est range dans l'ordre croissant. J=J+1 C On passe au voisin suivant de Noeud. GOTO 100 ELSE C cas ou le voisin de Noeud >au voisin de X. IFUS(1)=IFUS(1)+1 IFUS(**)=NVOIS(K) C on met dans Fus le voisin de X. K=K+1 GOTO 100 ENDIF ENDIF ENDIF ENDIF IF(.NOT.((K.GT.NPVOIS(X+NBENS)).AND. C si on n'a fini de decrire l'une des 2 listes, IF(K.GT.(NPVOIS(X+NBENS))) THEN C on a fini de rajouter tous les voisins de X. C on rajoute ceux de NOEUD restants. IF (NVOIS(L).NE.X) THEN IFUS(1)=IFUS(1)+1 IFUS(**)=NVOIS(L) ENDIF 220 CONTINUE ELSE C ***(J.GT.NPVOIS(NOEUD+NBENS)**** C on finit de rajouter les voisins de X DO 330 L=K,NPVOIS(X+NBENS) IFUS(1)=IFUS(1)+1 IFUS(**)=NVOIS(L) ENDIF 330 CONTINUE ENDIF C *******(K.GT.NPVOIS(X+NBENS)).AND.(J.GT.NPVOIS(NOEUD+NBENS)****** ENDIF C*******End du IF(.NOT.(K.GT.NPVOIS(X+NBENS)) C .AND.(J.GT.NPVOIS(NOEUD+NBENS))****** SEGSUP IFUS 500 CONTINUE SEGSUP NEFFET RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales