具体解题思路和答案可以参考:代码随想录: 24. 两两交换链表中的节点
自我错误思考过程记录:
✘ 错误代码:
//思路:
class Solution {
public:
ListNode* swapPairs(ListNode* head)
{
ListNode* dummyHead=ListNode(0);
dummyHead->next=head;
while(dummyHead->next->next!=nullptr&&dummyHead->next!=nullptr)
{
ListNode* temp1=dummyHead->next;
ListNode* temp3=dummyHead->next->next->next;
dummyHead->next=dummyHead->next->next; //头结点指向第二个
dummyHead->next->next=temp1; //第二个指向第一个
temp1->next=temp3; //第一个指向第三个
dummyHead=temp1->next;
}
return
}
};
✘ 错误分析:题目要求: 并返回交换后链表的头节点。 直接移动dummyHead的话 ,没有办法获取头结点了。
还有就是 new ListNode(0); 这样初始化一个节点。
正确的写法应该用一个cur=dummyHead,保留dummyHead :