剑指Offer.24——反转链表

题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

解题思路:

定义一个虚节点,用作返回链表的头节点,然后令res.next = null,创造出最原始的要返回的链表结构。

然后遍历原来链表,每遍历一个节点,就创造一个新的节点(这里不能直接指向源节点,即ListNode cur = head,应该初始化一个新节点),将此节点插入到返回链表中。最后返回结果链表的next.

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode res = new ListNode(-1);
        res.next = null;
        while(head != null){
            ListNode cur = new ListNode(head.val);
            cur.next = res.next;
            res.next = cur;
            head = head.next;
        }
        return res.next;
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43207025/article/details/107595227