OJ练习LeetCode-206:反转链表

题目

206. 反转链表 - 力扣(LeetCode)

OJ练习LeetCode-206:反转链表_第1张图片

 OJ练习LeetCode-206:反转链表_第2张图片

 思路

根据题目要求,即将上方链表变成下方所示的链表:

OJ练习LeetCode-206:反转链表_第3张图片

1.要实现引用的指向反向,需要创建两个结点,记为prev和cur;

OJ练习LeetCode-206:反转链表_第4张图片 

2.在遍历的过程中始终保持prev为cur的前驱节点(即先让prev指向cur再让cur向后遍历);

3.当最后cur和cur.next均=null时,此时的prev即为头结点

OJ练习LeetCode-206:反转链表_第5张图片

完整代码

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode cur = head;
        ListNode prev = null;   //保证prev始终是cur的前驱节点
        while(cur != null){
            ListNode next = cur.next;   //因为多次使用到cur.next因此初见新的结点保存
            cur.next = prev;    //改变“箭头”即引用的指向
            prev =cur;  //prev同时向后移动
            cur = next; //cur不断向后遍历
        }
        return prev;
    }
}

你可能感兴趣的:(OJ练习,链表,leetcode,数据结构)