私はFotran77で作業しようとしていますが、ツリーベースのデータ構造が必要であることがわかりました。配列を使用してツリーを実装する以外に、ほとんどの言語の標準実装に従って、他のノードへのポインターノードを使用してツリーを構築する方法はありますか?
この獣のドキュメントは少なく、これを可能にする標準的な構造タイプはないようです。
考え?
私はFotran77で作業しようとしていますが、ツリーベースのデータ構造が必要であることがわかりました。配列を使用してツリーを実装する以外に、ほとんどの言語の標準実装に従って、他のノードへのポインターノードを使用してツリーを構築する方法はありますか?
この獣のドキュメントは少なく、これを可能にする標準的な構造タイプはないようです。
考え?
Fortran90以降に移行することをお勧めします。FORTRAN77以前は言語仕様にポインターがなかったため、コンパイラーの作成者(およびユーザー)は、必要な機能を追加して、やりたいことを実行するための巧妙な方法を数多く考案しました。Fortran 90には、動的データ構造に対する適切なポインターがあります。
賢い*とは、もちろん、高度なプログラミングスキルと、メモリ、ポインター、参照および逆参照(これらはすべてほとんどのFortranプログラマーにとっては異質なもの)の理解を必要とし、賢い*プログラムはコンパイラ間またはハードウェア間で移植できないという必然的な結果を意味します。プラットフォーム間でも、プログラマー間でも。
なぜFORTRAN77での作業に制限されるのかわかりません。標準のFORTRAN77は構文的に正しく、Fortran90コンパイラーでコンパイル可能です。もちろん、新しいツリー処理コードを古い言語の既存のコードベースと統合する必要がありますが、それは古い言語で新しいユニットを作成する必要があるという意味ではありません。
そして、ちなみに、FORTRAN77はFORTRANIIよりもはるかに近代的でした。
これは、ユーザー定義の派生型とポインター型を持つFortran95/2003でははるかに簡単です。これらの機能を使用して、リンクリストやツリーなどのデータ構造を設定できます。(ポインター型はポインターと呼ばれますが、ポインター演算が不可能であるという点で、エイリアスに似ています)。Fortran> = 95は、Fortran77に比べて多くの改善があります。Fortran77のレガシーコードに小さな変更を加えない限り、Fortran77を使用しないことをお勧めします。コーエン。
あなたが本当にFortran-77で立ち往生しているなら、あなたはCrayポインターを使うことができます:
http://gcc.gnu.org/onlinedocs/gfortran/Cray-pointers.html
Crayポインターは非標準であり、いくつかの欠点がありますが、Cポインターに似たものが得られます。これらは、gfortranおよびほとんどの商用コンパイラーによってサポートされています。
そうは言っても、Fortran-90ポインターやFortran2003のC相互運用性機能などの新しいFortran機能を使用したほうがよいでしょう。
Crayポインターやその他のハッカーがなければ、「データ型」を実装する唯一の方法は、それぞれがフィールドを表す並列配列を使用することです。したがって、インデックスはデータ型のインスタンス化を参照できます。