Link-cut trees: using access() and link()
I think you might be mixing up the represented tree, $R$, and the auxiliary tree representation of the represented tree, $T$.

Recall the definition of $LINK(v, w)$:


  $link(v, w)$ - Makes vertex $v$ a new child of vertex $w$.


This happens in the represented tree. Then to keep the auxiliary representation consistent we make $w$ the left child of $v$ because they are keyed by their depth in the represented tree (i.e. left children are higher, right children are lower in the represented tree). So your proposed linking should happen like so:


$link(A, B)$ - Make $A$ the child of $B$ in $R$. Make $B$ the left child of $A$ in $T$ (assumptions are omitted).





$link(B, C)$ - Make $B$ the child of $C$ in $R$. Rebalance the splay tree in $T$ and make $C$ left child of $B$.


 


$link(C, D)$ - Similar to step 2.




Then we have the preferred path in the represented tree is simply $D \rightarrow C \rightarrow B \rightarrow A$.