2010-01-14 2 views
1

Я пытаюсь работать в Fotran 77, и я нашел необходимость в структуре данных на основе дерева. Помимо реализации дерева с массивом, есть ли способ построить дерево с узлами указателя на другие узлы, как стандартная реализация на большинстве языков?Абстрактные типы данных в Fortran 77 (Fortran-II)?

Документация для этого зверя ограничена, и, похоже, не существует какого-либо стандартного типа структуры, который сделает это возможным.

Мысли?

ответ

0

Without указателей Cray или других повозка, запряженная волами, единственный способ реализации «тип данных» имеет параллельные массивы, каждый из которых представляет собой поле. Затем индекс может ссылаться на экземпляр типа данных.

1

Это было бы намного проще в Fortran 95/2003, который имеет определяемые пользователем производные типы и типы указателей. С помощью этих функций можно настроить структуры данных, такие как связанные списки и деревья. (Типы указателей называются указателями, но они больше похожи на псевдоним, поскольку эта арифметика указателя невозможна). Fortran> = 95 имеет много улучшений по сравнению с Fortran 77. Моя рекомендация - не использовать Fortran 77, если вы не вносите незначительные изменения в устаревший код, который находится в Fortran 77. Хорошая книга «Fortran 95/2003» объясняется Metcalf, Reid и Коэн.

+0

Это действительно не помогает мне вообще. Мне нужно решение fortran 77. –

+3

Зачем вам нужно решение FORTRAN77? Я с MSB по этому поводу. Кто-то держит пистолет в голову? –

+1

Также: вы просили мысли, и у вас были мои и MSB. –

5

Предлагаю перейти на Fortran 90 или более поздней версии. FORTRAN77 и ранее не имели указателей в спецификации языка, поэтому составители компиляторов (и пользователи) придумали целый набор умных способов добавления необходимой функциональности, чтобы сделать именно то, что вы хотите сделать. Fortran 90 имеет правильные указатели для динамических структур данных.

умные * означает, конечно , требующие особые навыки программирования и понимание памяти, указатели, ссылка и де ссылки (все из которых являются чуждым большинству Fortran-программистов) с неизбежным последствием, что умная * программа не переносимый между компиляторами, а также между аппаратными платформами и между программистами.

Я не понимаю, почему вам будет запрещено работать в FORTRAN77 - стандартный FORTRAN77 остается синтаксически правильным и компилируемым с помощью компиляторов Fortran 90. Конечно, вам нужно интегрировать свой новый код обработки дерева с существующей кодовой базой на старый язык, но это не значит, что вам нужно писать новые единицы на старом языке.

И, попутно, FORTRAN77 был более современным, чем FORTRANII.

+2

Пожалуйста, обратите внимание. Попытка что-то вроде этого, когда обновленные версии языков справятся с этим намного лучше, приведет к параллели со сценой в The Fellowship of the Ring, где Саруман провозглашает, что «вы выбрали путь боли!». –

0

Если вы действительно застряли с Fortran-77, вы можете использовать Cray указатели:

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

Cray указатели являются нестандартными и имеют некоторые недостатки, но они дадут вам что-то подобное C-указатель. Они поддерживаются gfortran и большинством коммерческих компиляторов.

С учетом сказанного, вы, вероятно, будет лучше использовать новые Fortran функции, такие как Fortran-90 указателей или функции C-взаимодействия в Fortran 2003.

Смежные вопросы