문제
아래 파스칼 코드는 무엇을 의미합니까?
p^.rlink=q
q^.llink=p
해결책
파스칼 연산자 ^.
연산자와 유사합니다 ->
C 및 C ++에서.
그것은 포인터를 해석합니다 (당신의 경우, p
정의해야합니다 var p: ^type
) 및 레코드의 변수에 액세스합니다 (이 경우) rlink
그리고 llink
.
다른 팁
CARET (^)가 포인터 변수 후에 나타나면 포인터를 해석합니다. 즉, 포인터가 보유한 메모리 주소에 저장된 값을 반환합니다. 그래서 당신의 경우 나는 그것을 생각합니다 p
레코드에 대한 포인터입니다 rlink
속성 및 q
레코드에 대한 포인터입니다 llink
재산. 이러한 특성은 또한 동일한 구조에 대한 포인터입니다. p
그리고 q
그런 다음 그들에게 할당됩니다. 이 구조는 왼쪽 및 오른쪽 노드가있는 이진 트리 데이터 유형을 나타냅니다.
가능성은 P와 Q가 A의 요소라는 것입니다. 이중 연결 목록, 종종 양방향 링크 목록이라고합니다. 이 두 문장은 "왼쪽"에 P와 "오른쪽"에 Q를 함께 첨부하고 있습니다. C/C ++의 동등한 것은 다음과 같습니다.
p->rlink = q;
q->llink = p;
그만큼 ^
포인터를 따르십시오 .
레코드 구성원에게 액세스하십시오. 그래서이 줄은 아마도 그래프 어떤 종류의.
P와 Q는 포인터 인 것 같습니다. 그들은 각각 (또는 아마도 둘 다), rlink 및 llink (오른쪽 링크 및 왼쪽 링크 추측)를 가진 레코드 변수를 가리 킵니다.
이 스 니펫은 아마도 그래프 또는 링크 된 종류의 종류의 목록에서 사용될 수 있습니다.
Pascal의 Caret (^) 연산자는 Dereference Opertator로, 포인터가 아닌 가변 컨텐츠에 액세스 할 수 있습니다.
C 언어의 직접적인 동등한 일입니다
(p*).rlink=q
(q*).llink=p
그러나 물론 이것은 일반적으로 다음과 같이 표현 될 것입니다
p->rlink=q
q->llink=p
한 단계로 연기 및 멤버 액세스를 수행하는 C의 -> 연산자를 사용합니다.