Fortran 77(Fortran-II)中的抽象数据类型?

时间:2010-01-14 22:40:09

标签: fortran fortran77 abstract-data-type

我正在尝试在Fotran 77中工作,我发现需要基于树的数据结构。除了使用数组实现树之外,是否有任何方法可以根据大多数语言的标准实现构建具有指向其他节点的指针节点的树?

这只野兽的文件很少,似乎没有任何标准的结构类型可以实现这一点。

思想?

4 个答案:

答案 0 :(得分:5)

我建议你转到Fortran 90或更高版本。 FORTRAN77和早期的语言规范中没有指针,因此编译器编写者(和用户)想出了一大堆聪明的方法来添加必要的功能来完成你想做的事情。 Fortran 90具有适当的动态数据结构指针。

聪明*意味着,当然需要高级编程技能和对内存,指针,引用和解引用的理解(所有这些都与大多数Fortran程序员不同)具有聪明的不可避免的后果*程序不能在编译器之间移植,也不能在硬件平台之间移植,也不能在程序员之间移植

我不明白为什么你会被限制在FORTRAN77工作 - 标准的FORTRAN77在语法上是正确的并且可以与Fortran 90编译器兼容。当然,您必须将新的树处理代码与旧语言中的现有代码库集成,但这并不意味着您必须使用旧语言编写新单元。

顺便说一下,FORTRAN77比FORTRANII更现代化。

答案 1 :(得分:1)

这在Fortran 95/2003中会更容易,它具有用户定义的派生类型和指针类型。使用这些功能,可以设置数据结构,例如链表和树。 (指针类型称为指针,但它们更像是别名,因为指针算法是不可能的)。 Fortran> = 95比Fortran 77有许多改进。我建议不要使用Fortran 77,除非对Fortran 77中的遗留代码进行微小的修改。一本好书是由Metcalf,Reid“Fortran 95/2003解释”和科恩。

答案 2 :(得分:0)

如果您真的遇到Fortran-77,可以使用Cray Pointers:

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

Cray Pointers是非标准的并且有一些缺点,但它们会给你一些类似于C指针的东西。他们得到了gfortran和大多数商业编译器的支持。

话虽如此,你可能会更好地使用Fortran-90指针或Fortran 2003中的C-interoperability功能等新的Fortran功能。

答案 3 :(得分:0)

没有Cray指针或其他hackery,实现“数据类型”的唯一方法是使用并行数组,每个数组代表一个字段。因此,索引可以引用数据类型的实例化。