C RAJOUT SOURCE CHAT 05/01/13 02:44:51 5004 C************************************************************************** C************************************************************************** C**************************** *************************** c************************ RAJOUTE *********************** c**************************** *************************** C************************************************************************** C************************************************************************** C cette procedure permet de RAJOUTER un element de fus dans les voisins C de X. Elle decale donc toute la gestion de donnees ,notemment C NPVOIS(J,1),NPVOIS(J,2) pour J>X,afin de pouvoir inserer l' element C a la position convenable. SUBROUTINE RAJOUT(IFUS,X,NPVOIS,NVOIS,NBENS) IMPLICIT INTEGER(I-N) SEGMENT NPVOIS(0),NVOIS(0) INTEGER NBENS INTEGER X SEGMENT IFUS(0) INTEGER COMPT COMPT=2 N=NPVOIS(X) C indice minimal des voisins de X. 100 IF (IFUS(1).GE.(COMPT-1)) THEN IF (NPVOIS(X+1).GT.N) THEN C si on n'ecrase pas les voisins du noeud suivant. NVOIS(N)=IFUS(COMPT) C on peut alors rajouter l'element IFUS(COMPT). ELSE C sinon il faut decaler tous les indicages des noeuds suivants. NVOIS(**)=NVOIS(NPVOIS(2*NBENS)) DO 200 I=NPVOIS(2*NBENS)-1,N,-1 NVOIS(I+1)=NVOIS(I) 200 CONTINUE DO 250 I= X+1,NBENS NPVOIS(I)=NPVOIS(I)+1 NPVOIS(I+NBENS)=NPVOIS(I+NBENS)+1 250 CONTINUE NVOIS(N)=IFUS(COMPT) ENDIF N=N+1 COMPT=COMPT+1 GOTO 100 ENDIF NPVOIS(X+NBENS)=N-1 C on change l'indice maximal DE NPVOIS. RETURN END