欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

链表中相邻的结点交换

程序员文章站 2022-05-06 11:01:36
...

链表中相邻的结点交换

看到了一个很厉害的递归,逐行注解一下

写递归不要关注里面的内容,只关注它的功能。

内容的话,想好终止条件,和最后一次循环的操作思路。

比如这个递归到最深的一层就是,head所指->next所指->null

最后要得到 next所指 -> head所指 -> null

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head == null || head.next== null) return head;
        ListNode next = head.next;
        //就把后半部分当作next后面已经交换好的链表
        // head所指结点 -> next所指结点 -> 交换好的
        head.next = swapPairs(next.next);
        next.next = head;
        return next;
    }
}

 

相关标签: 刷题小本本