- 思路
本体为链表模拟题,模拟出两个链表节点的反转后即可实现链表的两两反转。
- 构建虚拟头结点
- 将第二个节点变为第一个节点
- 将第一个节点变为第二个节点
- 将第二个节点指向第三个节点
class Solution
{
public:
ListNode* swapPairs(ListNode* head)
{
if (head == nullptr)
{
return head;
}
ListNode* dummyHead = new ListNode(0);
dummyHead->next = head;
ListNode* cur = dummyHead;
while (cur->next != nullptr && cur->next->next != nullptr)
{
ListNode* node1 = cur->next;
ListNode* node3 = cur->next->next->next;
cur->next = cur->next->next;
cur->next->next = node1;
cur->next->next->next = node3;
cur = cur->next->next;
}
return dummyHead->next;
}
};