Question

Je tente de travailler dans Fotran 77, et je l'ai trouvé la nécessité d'une structure de données arborescente. En dehors de la mise en œuvre d'un arbre avec un tableau, est-il possible de construire un arbre avec des noeuds pointeur vers d'autres noeuds, selon une implémentation standard dans la plupart des langues?

La documentation de cette bête est rare, et il ne semble pas être tout type de structure standard qui rendrait cela possible.

Pensées

Était-ce utile?

La solution 4

Sans pointeurs Cray ou autre carriole, la seule façon de mettre en œuvre un « type de données » est avec des tableaux parallèles, dont chacun représente un champ. Un index, alors, peut se référer à une instanciation du type de données.

Autres conseils

Je vous suggère de passer à Fortran 90 ou plus tard. FORTRAN77 et plus tôt ne pas avoir des pointeurs dans la spécification du langage, de sorte que les auteurs du compilateur (et les utilisateurs) sont venus avec toute une série de moyens astucieux * d'ajouter les fonctionnalités nécessaires pour faire exactement le genre de chose que vous voulez faire. Fortran 90 a des pointeurs appropriés pour les structures de données dynamiques.

intelligent moyen *, bien sûr nécessitant des compétences avancées en programmation et la compréhension de la mémoire, pointeurs, référencement et de-référencement (qui sont tous étrangers à la plupart des programmeurs Fortran) avec la conséquence inévitable intelligent * programmes ne sont pas portables entre les compilateurs, ni entre les plates-formes matérielles, ni entre programmeurs .

Je ne comprends pas pourquoi vous seriez limité à travailler dans FORTRAN77 - FORTRAN77 standard reste syntaxiquement correct et compilable avec Fortran 90 compilateurs. Bien sûr, vous devez intégrer votre nouveau code de traitement des arbres avec le code existant dans l'ancienne langue, mais cela ne signifie pas que vous devez écrire de nouvelles unités dans la langue ancienne.

Et, en passant, FORTRAN77 était beaucoup plus moderne que FORTRANII.

Ce serait beaucoup plus facile à Fortran 95/2003, qui a des types dérivés définis par l'utilisateur et les types de pointeur. L'utilisation de ces caractéristiques une structure de données de configuration peut, comme les listes chaînées et les arbres. (Les types de pointeurs sont appelés pointeurs, mais ils sont plus comme alias, dans cette arithmétique de pointeur est impossible). Fortran> = 95 a de nombreuses améliorations par rapport Fortran 77. Ma recommandation est de ne pas utiliser Fortran 77 moins que l'on apporte quelques modifications mineures au code existant qui est en Fortran 77. Un bon livre est « Fortran 95/2003 expliqué » par Metcalf, Reid et Cohen.

Si vous êtes vraiment coincé avec Fortran-77, vous pouvez utiliser Pointeurs Cray:

http://gcc.gnu.org/onlinedocs/gfortran/Cray -pointers.html

Cray Pointeurs ne sont pas standard et ont quelques inconvénients, mais ils vont vous donner quelque chose de semblable à un pointeur C. Ils sont pris en charge par les compilateurs gfortran et les plus commerciaux.

Cela dit, vous seriez probablement mieux d'utiliser les nouvelles fonctionnalités Fortran, comme des pointeurs Fortran-90 ou les caractéristiques C-interopérabilité en Fortran 2003.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top