JAVA 反转链表

57 阅读1分钟

反转链表的核心思想就是三个指针

第一个指针:记录当前的位置

第二个指针:记录前一个位置

第三个指针:记录下一个位置

/**
 * 翻转链表
 * 2022年10月27日09:29:06
 * 示例:
 * 输入: 1->2->3->4->5->NULL
 * 输出: 5->4->3->2->1->NULL
 */
 
public class Test03 {
    public static ListNode reverseList(ListNode head){
        if(head == null){
            return null;
        }
        // 当前指针
        ListNode cur = head;
        // 前一个指针节点
        ListNode pre = null;
        // 先保存当前节点的下一个节点
        ListNode temp = cur.next;
        while(cur != null){
            // 当前的指针指向前一个
            cur.next = pre;
            // 然后前一个指针变成当前指针的位置
            pre = cur;
            // 当前指针来到了下一个
            cur = temp;
        }
        // 因为当前节点为null,就停止了 前面的节点才是头节点了。
        return pre;
     }
}

//单向链表节点
class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}