我遇到了从链接列表的开头到结尾交换连续两个节点的问题。(例如[1,2,3,4]到[2,1,4,3]或[1,2,3] ,4,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行。为什么它只会改变头部'到''但保持' a'不变?在调试时,' a'并且' head'在这一行之前是一样的。