一、思路:
在头结点前加一个哑结点,遍历,判断是否当前节点的后两个节点是否为空,为空交换一次,最后返回哑结点的next
二、C++:
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode *dummpy = new ListNode(-1);
dummpy->next = head;
ListNode *nowNode = dummpy;
while (nowNode->next != NULL && nowNode->next->next != NULL) {
ListNode *p1 = nowNode->next;
ListNode *p2 = p1->next;
nowNode->next = p2;
p1->next = p2->next;
p2->next = p1;
nowNode = p1;
}
return dummpy->next;
}
};