方法:n1、n2两两交换但是由于两两交换之后n1与接下来的n3、n4仍有联系否则交换后n1的next为n3而n4的next也为n3,导致n4丢失,所以我们在链表中的表头添加一个节点,使得两两交换的时候是三个有关节点进行交换,其中第一个节点位置不动后两个交换
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/class Solution {public:ListNode* swapPairs(ListNode* head) {if(!head||!head->next){return head;}ListNode d(0);d.next=head;head=&d;while(head&&head->next&&head->next->next){ListNode* n1=NULL;ListNode* n2=NULL;n1=head->next;n2=n1->next;n1->next=n2->next;n2->next=n1;head->next=n2;head=n1;}return d.next;}};
