翻转链表

213 阅读1分钟

要求:

输入一个链表,反转链表后输出链表的所有元素。

思路:

让后一个节点指向前一个节点,定义一个next节点,主要用于保存要反转到头的那个节点,防止链表断裂。

代码:

public class ListNode {
    int val;
    ListNode next = null;
    
    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode next = null;
        ListNode pre = null;
        
        while (head != null) {
            //保存要反转到头的那个节点
            next = head.next;
            //要反转的那个节点指向已经反转的上一个节点(第一次反转的时候会指向null)
            head.next = pre;
            //上一个已经反转到头的节点
            pre = head;
            //一直往后走
            head = next;
        }
        return pre;
    }
}