2009-11-29 27 views
4

下面的Pascal代碼是什麼意思?插入點(^。)是什麼意思?

p^.rlink=q 
q^.llink=p 
+2

pascal中的賦值運算符是':=',而不是'='。 '='是一個布爾運算符,用於測試C語言世界中的相等性:'=='。 – Vector

回答

10

pascal運算符^.與C和C++中的運算符->類似。

它取消引用指針(在你的情況下,p應該被定義爲var p: ^type)和在記錄訪問一個變量,在這種情況下,rlinkllink

4

當插入符號(^)出現一個指針變量之後解除引用指針,也就是說,它返回存儲在由指針所保持的存儲器地址的值。所以在你的情況下,我想p是指向具有rlink屬性的記錄的指針,並且q是指向具有llink屬性的記錄的指針。這些屬性也指向相同的結構,因爲pq然後分配給它們。我想這個結構代表了一個帶有左右節點的二叉樹數據類型。

+2

+1的一般答案,但我會假設這是一個雙向鏈表,並在添加節點後更新指針。請注意,'p^.rlink^.llink'實際上是'p',它在雙向鏈表中而不是樹中。 –

0

^跟着一個指針,而.訪問記錄的成員。所以這些線路可能會重新排列某種graph中的鏈接。

0

p和q似乎是指針。他們指向一個記錄變量,它們分別具有(或者可能兩者都有)rlink和llink(猜測右側鏈接和左側鏈接)。

此代碼段可能用於圖的上下文或可能是鏈接的排序列表。

Pascal中的^符號(^)運算符是取消引用操作符,它使人能夠訪問變量內容而不是指針。

直接等效於C語言將是

(p*).rlink=q 
(q*).llink=p 

但當然這將典型地被表示爲

p->rlink=q 
q->llink=p 

使用C的 - >運算符,它確實在一個步驟中deferencing和成員訪問。

3

可能的可能性是p和q是doubly-linked list中的元素,通常稱爲雙向鏈表。這兩個陳述將它們連在一起,其中「左」和右「右」。 C/C++中的等價物將是:

p->rlink = q; 
q->llink = p;