C AJOULN    SOURCE    GF238795  15/01/08    21:15:01     8336
      SUBROUTINE AJOULN(lisAjo,lisPri,renum)
C     Ajoute les elements de la liste lisAjo a la liste lisPri s'il ne
C     sont pas present.
C
      logical renum
      integer nNoeud,nNoAj,nNoPr
      integer iNoeud,iNoAj,iNoPr
      integer taille
      segment LISNOD
         integer numero(taille)
      endsegment
      pointeur lisAjo.LISNOD
      pointeur lisPri.LISNOD
      pointeur lisInv.LISNOD
      nNoAj=lisAjo.numero(/1)
      nNoPr=lisPri.numero(/1)
C      write(6,*) 'Entree dans AjouLN'
C     Recherche du numero max de noeud
      nNoeud=0
      do iNoPr=1,nNoPr
         iNoeud=lisPri.numero(iNoPr)
         if(iNoeud.gt.nNoeud) then
            nNoeud=iNoeud
         endif
      enddo
      do iNoAj=1,nNoAj
         iNoeud=lisAjo.numero(iNoAj)
         if(iNoeud.gt.nNoeud) then
            nNoeud=iNoeud
         endif
      enddo

      taille = nNoeud
      segini lisInv
      do iNoPr=1,nNoPr
         iNoeud=lisPri.numero(iNoPr)
         if(iNoeud.gt.0) then
            lisInv.numero(iNoeud)=iNoPr
         endif
      enddo
      taille = nNoPr
      if(renum) then
         do iNoAj=1,nNoAj
            iNoeud=lisAjo.numero(iNoAj)
            if(iNoeud.gt.0) then
               iNoPr=lisInv.numero(iNoeud)
               if(iNoPr.le.0) then
                  taille=taille+1
                  lisInv.numero(iNoeud)=taille
                  iNoPr=taille
               endif
               lisAjo.numero(iNoAj)=iNoPr
            endif
         enddo
      else
         do iNoAj=1,nNoAj
            iNoeud=lisAjo.numero(iNoAj)
            if(iNoeud.gt.0) then
               iNoPr=lisInv.numero(iNoeud)
               if(iNoPr.le.0) then
                  taille=taille+1
                  lisInv.numero(iNoeud)=taille
                  iNoPr=taille
               endif
            endif
         enddo
      endif
      segadj lisPri
      do iNoeud=1,nNoeud
         iNoPr=lisInv.numero(iNoeud)
         if(iNoPr.gt.nNoPr)then
            lisPri.numero(iNoPr)=iNoeud
         endif
      enddo
      segsup lisInv
      end

