剑指 Offer 24. 反转链表

1.题目地址

力扣

2.题目描述

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

示例:

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

限制:

0 <= 节点个数 <= 5000

注意:本题与主站 206 题相同:https://leetcode-cn.com/problems/reverse-linked-list/

3.思路

使用迭代法,定义两个结点,aaa和bbb负责反转结点指向。在反转之前,定义一个temp在保存bbb的下一个结点,防止因为反转使后边结点被回收。在反转后,先使aaa后移到bbb的位置,bbb再后移到temp的位置。进入下一个循环,直到bbb不为空循环反转结束。

图示

剑指 Offer 24. 反转链表

 

4.代码

public ListNode reverseList(ListNode head) {
        ListNode aaa = null;
        ListNode bbb = head;
        while (bbb != null) {
            //存储前一个结点
            ListNode temp = bbb.next;
            //反转两个结点
            bbb.next = aaa;
            //后移
            aaa = bbb;
            bbb = temp;
        }
        return aaa;
    }

上一篇:SpringMVC-拦截器


下一篇:linux安装python