
这个题和k个一组反转链表是一样的题目,只是把K变成了2,其中的思路都是一样的。
详情参考
class Solution {public ListNode swapPairs(ListNode head) {if(head == null) return null;// 要有两个变量//一个用来指向当前的头结点,用来在反转后指向后面的链表//一个用来传递给下一组要反转的链表ListNode a, b;a = b = head;//1.检查当前链表的结点数还够不够反转for(int i = 0; i < 2; i++){if(b == null) return head;b = b.next;}//2.反转当前链表的前2个结点ListNode newHead = reverseK(a, b);//3.继续反转下一组链表a.next = swapPairs(b);return newHead;}public ListNode reverseK(ListNode a, ListNode b){ListNode prev, cur, nxt;prev = null; cur = nxt = a;while(cur!=b){nxt = cur.next;cur.next = prev;prev = cur;cur = nxt;}return prev;}}
