不理解一个双向链表中查找第i个节点在链表中的位置的函数

问题遇到的现象和发生背景

不理解一个双向链表中查找第i个节点在链表中的位置的函数

问题相关代码,请勿粘贴截图
DblNode *Locate ( DblList first, int i, int d ) {
    if ( i < 0 ) return NULL;
    if ( i == 0 ) return first;
    DblNode *p = ( d == 0 ) ? first->lLink : first->rLink;
    for ( int j = 1; j < i; j++ ) 
        if ( p == first ) break;
        else p = ( d == 0 ) ? p->lLink : p->rLink;
            //d = 0前趋方向, d = 1后继方向
    return ( p != first ) ? p : NULL;
}


运行结果及报错内容

img

我的解答思路和尝试过的方法

我想知道这里传递过来的d 是什么

因为是双向链表,d 是标志位,0 或 1 ,0 表示往前趋方向查找,1 表示往后继方向查找。

这是一个循环双链表