0
点赞
收藏
分享

微信扫一扫

数据结构与算法:反转链表

WikongGuan 2022-01-31 阅读 74

一边画图一边做就能做出来

迭代法:

/**
 * 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) {
        ListNode pre = null;
        ListNode now = head;
        while (now!=null){
            ListNode next = now.next;
            now.next = pre;
            pre = now;
            now = next;
        }
        return pre;
    }  
}

递归法:

/**
 * 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) {
        return doit(head,null);
    }
    ListNode doit(ListNode now,ListNode pre){
        if (now==null){
            return pre;
        }
        ListNode next = now.next;
        now.next = pre;
        return doit(next,now);
    }
}
举报

相关推荐

0 条评论