Télécharger ajouln.eso

Retour à la liste

Numérotation des lignes :

ajouln
  1. C AJOULN SOURCE GF238795 15/01/08 21:15:01 8336
  2. SUBROUTINE AJOULN(lisAjo,lisPri,renum)
  3. C Ajoute les elements de la liste lisAjo a la liste lisPri s'il ne
  4. C sont pas present.
  5. C
  6. logical renum
  7. integer nNoeud,nNoAj,nNoPr
  8. integer iNoeud,iNoAj,iNoPr
  9. integer taille
  10. segment LISNOD
  11. integer numero(taille)
  12. endsegment
  13. pointeur lisAjo.LISNOD
  14. pointeur lisPri.LISNOD
  15. pointeur lisInv.LISNOD
  16. nNoAj=lisAjo.numero(/1)
  17. nNoPr=lisPri.numero(/1)
  18. C write(6,*) 'Entree dans AjouLN'
  19. C Recherche du numero max de noeud
  20. nNoeud=0
  21. do iNoPr=1,nNoPr
  22. iNoeud=lisPri.numero(iNoPr)
  23. if(iNoeud.gt.nNoeud) then
  24. nNoeud=iNoeud
  25. endif
  26. enddo
  27. do iNoAj=1,nNoAj
  28. iNoeud=lisAjo.numero(iNoAj)
  29. if(iNoeud.gt.nNoeud) then
  30. nNoeud=iNoeud
  31. endif
  32. enddo
  33.  
  34. taille = nNoeud
  35. segini lisInv
  36. do iNoPr=1,nNoPr
  37. iNoeud=lisPri.numero(iNoPr)
  38. if(iNoeud.gt.0) then
  39. lisInv.numero(iNoeud)=iNoPr
  40. endif
  41. enddo
  42. taille = nNoPr
  43. if(renum) then
  44. do iNoAj=1,nNoAj
  45. iNoeud=lisAjo.numero(iNoAj)
  46. if(iNoeud.gt.0) then
  47. iNoPr=lisInv.numero(iNoeud)
  48. if(iNoPr.le.0) then
  49. lisInv.numero(iNoeud)=taille
  50. iNoPr=taille
  51. endif
  52. lisAjo.numero(iNoAj)=iNoPr
  53. endif
  54. enddo
  55. else
  56. do iNoAj=1,nNoAj
  57. iNoeud=lisAjo.numero(iNoAj)
  58. if(iNoeud.gt.0) then
  59. iNoPr=lisInv.numero(iNoeud)
  60. if(iNoPr.le.0) then
  61. lisInv.numero(iNoeud)=taille
  62. iNoPr=taille
  63. endif
  64. endif
  65. enddo
  66. endif
  67. segadj lisPri
  68. do iNoeud=1,nNoeud
  69. iNoPr=lisInv.numero(iNoeud)
  70. if(iNoPr.gt.nNoPr)then
  71. lisPri.numero(iNoPr)=iNoeud
  72. endif
  73. enddo
  74. segsup lisInv
  75. end
  76.  
  77.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales