リンクされたリストの最初から最後まで連続する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' は同じです。