将链表相邻的两个节点反转(Java)

题目描述
给定一个链表,每两个相邻节点交换一次,并返回它的头部。
您不能修改列表节点中的值,只能修改节点本身。
Example:

Given 1->2->3->4, you should return the list as 2->1->4->3.
1
解决
每次将相邻节点的第二个节点的next指针指向前一个节点,然后第一个节点的指针要指向下一组已经反转的相邻节点的第一个节点,很明显可以使用递归,反转当前的一组相邻节点,先反转下一组相邻节点
代码:

 public ListNode swapPairs(ListNode head) {
        //递归出口
        if(head == null || head.next == null)
            return head;
        //每组相邻节点的第二个节点
        ListNode newNode = head.next;
        //每组相邻节点的第一个节点的next指针指向下一组已反转的第一个节点
        head.next = swapPairs(head.next.next);
        //每组相邻节点的第二个节点的next指针指向改组的第一个节点
        newNode.next = head;
        return newNode;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容