2010-01-14 2 views
1

Fotran 77에서 작업하고 있는데 트리 기반 데이터 구조의 필요성을 발견했습니다. 배열이있는 트리를 구현하는 것 외에도 대부분의 언어에서 표준 구현에 따라 다른 노드에 포인터 노드가있는 트리를 만들 수있는 방법이 있습니까?Fortran 77 (Fortran-II)의 추상 데이터 유형?

이 짐승에 대한 설명서가 부족하며이를 가능하게하는 표준 구조 유형이없는 것으로 보입니다.

생각하십니까?

답변

0

의 C-상호 운용성 기능을 사용하여 더 나을 것, 유일한 방법은 구현하기 "데이터 유형"은 각각 필드를 나타내는 병렬 배열입니다. 인덱스는 데이터 유형의 인스턴스화를 나타낼 수 있습니다.

1

사용자 정의 파생 유형 및 포인터 유형이있는 Fortran 95/2003에서는 훨씬 쉬울 것입니다. 이러한 기능을 사용하면 링크 된 목록 및 트리와 같은 데이터 구조를 설정할 수 있습니다. (포인터 유형을 포인터라고 부르지 만 포인터 연산이 불가능하다는 점에서 별칭과 유사합니다. Fortran> = 95는 Fortran 77보다 많은 개선점을 가지고 있습니다. Fortran 77에있는 기존 코드를 약간 수정하지 않는 한 Fortran 77을 사용하지 않는 것이 좋습니다. 좋은 책은 Metcalf, Reid 및 "Fortran 95/2003 설명"입니다. 코헨.

+0

이것은 정말로 전혀 도움이되지 않습니다. 포트란 77 솔루션이 필요합니다. –

+3

왜 FORTRAN77 솔루션이 필요합니까? 나는 이것에 대해 MSB와 함께있다. 누군가 머리에 총을 들고 있습니까? –

+1

또한 : 당신은 생각을 요구했고, 당신은 내와 MSB를 가졌습니다. –

5

Fortran 90 이상으로 옮길 것을 권합니다. FORTRAN77 및 이전 버전에는 언어 사양에 대한 포인터가 없었기 때문에 컴파일러 작성자 (및 사용자)는 원하는 일을 수행하는 데 필요한 기능을 추가하는 영리한 방법을 고안했습니다. Fortran 90은 동적 데이터 구조를위한 적절한 포인터를 가지고있다. 고급 프로그래밍 기술과 메모리의 이해를 요구하는 과정

영리 * 수단은, 포인터, 참조하고 영리한 * 프로그램 이 아니라는 것을 피할 수없는 결과로 (대부분의 포트란 프로그래머 외계인 모두)을 해제 참조 컴파일러 간 또는 하드웨어 플랫폼 간 또는 프로그래머 간.

왜 FORTRAN77에서 작업하는 것으로 제한되는지 이해할 수 없습니다. 표준 FORTRAN77은 구문 상 올바르지 만 Fortran 90 컴파일러로 컴파일 할 수 있습니다. 물론 새로운 트리 처리 코드를 기존 언어의 기존 코드베이스와 통합해야하지만 그렇다고해서 새 단위를 오래된 언어로 작성해야한다는 의미는 아닙니다.

그리고 FORTRAN77은 FORTRANII보다 현대적입니다.

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

크레이 포인터가 아닌 표준 및 몇 가지 단점을 가지고 있지만, 그들은 당신에게 비슷한주지 : 당신이 정말 포트란-77와 함께 붙어있는 경우

+2

이주의를 지불하십시오. 업데이트 된 버전의 언어가 그것을 훨씬 잘 처리 할 때 이와 같은 것을 시도하면 Saruman이 "고통의 길을 선택했습니다!"라고 선언하는 The Fellowship of the Ring의 장면과 평행을 이룰 것입니다. –

0

, 당신은 크레이 포인터를 사용할 수 있습니다 C 포인터. gfortran과 상용 컴파일러가 지원합니다.

그렇게 말한다면, 당신은 아마 새로운 포트란 포트란-90 포인터와 같은 기능, 또는 크레이 포인터 또는 다른 해커없이 포트란 2003

관련 문제