反转单项链表的一种实现

148 阅读1分钟

题目说明

输入链表的头结点,要求给出一个方法,输出一个和原链表反转的链表

分析及其他

题意很清晰,就是要反转一个单项链表,但是编码的时候,我发现自己总是卡住,思路不清晰,借此记录一下

代码实现

public ListNode reverse(ListNode head) {
    //边界检查
    if (head == null || head.next == null)
        return head;
    //定义一个变量,用于接收结果
    //定义一个变量,用于保存临时信息
    //这里我理解,将当前值赋给result,并且将原result作为新result的next,同时,需要打断当前值的next
    ListNode result = null;
    ListNode temp = null;

    while (head != null) {
        //保存head.next指向的引用
        temp = head.next;
        //将当前值作为结果,并将上一次的结果,作为新的结果
        //同时,打断了原头的next引用
        head.next = result;
        result = head;
        //将head.next的引用,赋给head,继续下一步
        head = temp;
    }
}

其他

虽然代码简单,但是绕不过来是真费劲😂😂😂