zoukankan      html  css  js  c++  java
  • 【数据结构与算法】反转链表:递归实现

    反转链表:递归实现

    Java
    https://leetcode-cn.com/problems/reverse-linked-list/solution/fan-zhuan-lian-biao-di-gui-shi-xian-by-x-qf5o/

    解题思路

    反转链表,类似其他链表的处理过程,我们可以假设函数已经处理好之后的链表了,我们只要处理头结点跟之后链表的关系。头节点的next节点即处理好之后的新链表的尾节点,此时新链表尾节点指向必定为null,需要更改为指向当前的头节点才能完成整个链表的反转,最后再按惯例,把头节点也就是新链表的尾节点的next指向空,这样就完成了整个链表的反转。
    链表

    代码

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        public ListNode reverseList(ListNode head) {
            // 传入空链表处理
            if(head == null){
                return null;
            }
            // 处理到结尾了,返回整个链表
            if(head.next == null){
                return head;
            }
            // 获取之后处理好的链表
            ListNode rev = recursive(head.next);
    
            // 处理好的链表的尾结点的next指向head
            head.next.next = head;
            // head也反转到null
            head.next = null;
            // 返回新链表的头节点
            return rev;
        }
    }
    
  • 相关阅读:
    P2045 方格取数加强版
    P2774 方格取数问题
    日记——OI历程
    6.30考试
    6.29考试
    数论...
    6.28数论测试
    洛谷P3802 小魔女帕琪
    hosts
    博客设置
  • 原文地址:https://www.cnblogs.com/minuy/p/15208199.html
Copyright © 2011-2022 走看看