1

リンクされたリストの最初から最後まで連続する2つのノードを交換するというこの問題に遭遇しました。 5] から [2,1,4,3,5]) へのポインター ソリューションを理解するのが難しいことがわかりました。誰でも次のコードで私を助けることができますか

ListNode* swapPairs(ListNode* head) {
    ListNode **pp = &head, *a, *b;
    while ((a = *pp) && (b = a->next)) {
        a->next = b->next;
        b->next = a;
        *pp = b;
        pp = &(a->next);
    }
    return head;
}

*pp = b という行がわかりません。「頭」を「b」に変更するだけで、「a」はそのままにしておくのはなぜですか? デバッグ時には、この行の前の 'a' と 'head' は同じです。

4

0 に答える 0