反转链表

题目描述:输入一个链表,反转链表后,输出链表的所有元素。

思路:遍历链表时通过头插法来插入链表结点。

步骤:

1 如果链表为空,返回null。

2 当前首结点设为尾结点。

3 遍历链表,通过头插法把当前链表结点插入到当前首结点的前面。

4 返回反转链表后的首结点。

时间复杂度:O(n)。

Java代码:

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    // 反转链表
    public ListNode ReverseList(ListNode head) {
        // 如果链表为空,返回null
        if (head == null) {
            return null;
        }
        
        // cur表示当前链表结点
        ListNode cur = head.next;
        // 当前首结点设为尾结点
        head.next = null;
        
        // 遍历链表
        while (cur != null) {
            // 获取当前链表结点的后继结点
            ListNode next = cur.next;
            // 当前首结点设为当前链表结点的后继结点
            cur.next = head;
            // 当前链表结点设为当前首结点
            head = cur;
            // 当前链表结点的旧后继结点设为当前链表结点
            cur = next;
        }
        
        // 返回反转链表后的首结点
        return head;
    }
}

 

posted on 2025-11-29 15:04  王景迁  阅读(0)  评论(0)    收藏  举报

导航