ListNode* tmp = cur->next;// 记录临时节点
ListNode* tmp1 = cur->next->next->next;// 记录临时节点
cur->next = cur->next->next;// 步骤一
cur->next->next = tmp;// 步骤二
cur->next->next->next = tmp1;// 步骤三
以上是代码随想录对于力扣24题交换两两链表的部分解答,我一开始不理解步骤三为什么是
cur->next->next->next = tmp1;//感觉像没变化因为ListNode* tmp1 = cur->next->next->next
后来举了一个例子理解了:
小明->小张->小红->小兰->null;
当小红指向改变时,变为小红->小明->小张,原本如果cur->next是小红,那么
cur->next->next->next是null,但是更新之后cur->next->next->next就变成了小张,
所以需要设置临时结点,相当于保留那个原本的位置(也不知道这样理解对不对)
当链表的结点改变方向时,原来结点指向的结点都随之更新,在改变之前会设置一个临时结点,相当于记住这个位置