Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 77(Fortran II)中的抽象数据类型?_Fortran_Fortran77_Abstract Data Type - Fatal编程技术网

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

Fortran 77(Fortran II)中的抽象数据类型?,fortran,fortran77,abstract-data-type,Fortran,Fortran77,Abstract Data Type,我正在尝试使用Fotran 77,我发现需要一种基于树的数据结构。除了用数组实现树之外,有没有办法按照大多数语言的标准实现,用指向其他节点的指针节点构建树 关于这个beast的文档很少,而且似乎没有任何标准的结构类型可以实现这一点 想法?这在Fortran 95/2003中会容易得多,它有用户定义的派生类型和指针类型。使用这些功能可以设置数据结构,如链表和树。(指针类型称为指针,但它们更像别名,因为指针算法是不可能的)。Fortran>=95比Fortran 77有许多改进。我的建议是不要使用F

我正在尝试使用Fotran 77,我发现需要一种基于树的数据结构。除了用数组实现树之外,有没有办法按照大多数语言的标准实现,用指向其他节点的指针节点构建树

关于这个beast的文档很少,而且似乎没有任何标准的结构类型可以实现这一点


想法?

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

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

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

当然,聪明*意味着需要高级编程技能和对内存、指针、引用和反引用的理解(所有这些对大多数Fortran程序员来说都是陌生的),其必然结果是聪明*程序在编译器之间、硬件平台之间、程序员之间都不可移植

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


顺便说一句,Fortran 77比FORTRANII更现代。

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

当然,聪明*意味着需要高级编程技能和对内存、指针、引用和反引用的理解(所有这些对大多数Fortran程序员来说都是陌生的),其必然结果是聪明*程序在编译器之间、硬件平台之间、程序员之间都不可移植

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


顺便说一句,Fortran 77比FORTRANII更现代。

如果你真的坚持使用Fortran-77,你可以使用Cray指针:

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


话虽如此,您可能最好使用较新的Fortran功能,如Fortran-90指针或Fortran 2003中的C-互操作性功能。

如果您真的坚持使用Fortran-77,您可以使用Cray指针:

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


话虽如此,您可能最好使用较新的Fortran功能,如Fortran-90指针或Fortran 2003中的C-互操作性功能。

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

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

这对我一点帮助都没有。我需要一个fortran 77解决方案。你为什么需要fortran 77解决方案?在这一点上,我支持MSB。有人拿枪指着你的头吗?还有:你问我的想法,你有我的和MSB的。还有这件事上的这些人。。。为什么是f77?您必须使用旧标准的具体要求是什么。。。特别是因为f77是f90的一个子集(完全),并且在。。。我认为f2008或f2010。这对我一点帮助都没有。我需要一个fortran 77解决方案。你为什么需要fortran 77解决方案?在这一点上,我支持MSB。有人拿枪指着你的头吗?还有:你问我的想法,你有我的和MSB的。还有这件事上的这些人。。。为什么是f77?您必须使用旧标准的具体要求是什么。。。特别是因为f77是f90的一个子集(完全),并且在。。。我认为是f2008或f2010。请注意这一点。尝试一些