链表翻转的算法

链表翻转的算法

1、递归实现

class Solution {
    
    
    public ListNode reverseList(ListNode head) {
    
    
        if(head == null || head.next == null) {
    
    
            return head;
        }
        ListNode cur = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return cur;
    }
}

2、迭代实现

class Solution {
    
    
    public ListNode reverseList(ListNode head) {
    
    
        ListNode pre = null, cur = head, next = null;
        while(cur != null) {
    
    
            next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        return pre;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42999705/article/details/114969960