C 指向交换linkedlist节点中指针用法的指针
我遇到了从链表的开始到结束交换连续两个节点的问题(例如[1,2,3,4]到[2,1,4,3]或[1,2,3,4,5]到[2,1,4,3,5]),我发现指针到指针的解决方案很难理解。有人能帮我查一下以下代码吗C 指向交换linkedlist节点中指针用法的指针,c,singly-linked-list,pointer-to-pointer,C,Singly Linked List,Pointer To Pointer,我遇到了从链表的开始到结束交换连续两个节点的问题(例如[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->nex
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;
}
我听不懂这一行。为什么它只把“头”改为“b”,而不去碰“a”?调试时,此行前面的“a”和“head”相同。Er。因为它们是独立的变量?为什么设置一个变量会改变另一个变量(即使另一个变量恰好具有相同的值)?谢谢。我想我找到了原因。“a”和“head”的地址不同,pp只指向head。我只检查了“A”和“头”这是一个错误。请考虑回答你自己的问题。因为它们是独立的变量?为什么设置一个变量会改变另一个变量(即使另一个变量恰好具有相同的值)?谢谢。我想我找到了原因。“a”和“head”的地址不同,pp只指向head。我只检查了“A”和“头”这是一个错误。请考虑回答你自己的问题。