Leecode206 反转链表

简介: Leecode206 反转链表
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null || head.next == null){
            return head;
        }else {
            //添加一个用来辅助反转的节点
            ListNode reverseHead = null;
            //当前节点
            ListNode currentNode = head;
            //当前节点的前一个节点
            ListNode previousNode = null;
            while(currentNode != null){
                //当前节点的后一个节点
                ListNode nextNode = currentNode.next;
                if(nextNode == null){
                    reverseHead = currentNode;
                }
                //将当前节点的后一个节点指向当前节点的前一个节点
                currentNode.next = previousNode;
                //将当前节点的前一个节点指向当前节点
                previousNode = currentNode;
                //将当前节点指向当前节点的后一个节点
                currentNode = nextNode;
            }
            return reverseHead;
        }
    }
}

解题思路:

我们要明白返回的是当前节点,所以先用来指定一个结点用来指向后面一个接结点为空的当前节点

通过添加一个额外的结点来实现链表的反转,让当前节点的下一个结点指向当前结点的前一个节点,再让当前节点的前一个节点指向当前节点,最后让当前节点指向当前节点的下一个结点


相关文章
|
6月前
Leecode之反转链表
Leecode之反转链表
【剑指offer】-反转链表-15/67
【剑指offer】-反转链表-15/67
剑指offer-6.重建二叉树
剑指offer-6.重建二叉树
26 0
剑指offer 23. 反转链表
剑指offer 23. 反转链表
55 0
Leecode 18. 四数之和
Leecode 18. 四数之和
50 0
|
Java C++
Leecode 876. 链表的中间结点
Leecode 876. 链表的中间结点
48 0
Leetcode剑指offer 24 反转链表
Leetcode剑指offer 24 反转链表
53 0
洛谷(2947)向右看齐-单调栈-链表
单调栈对新手来说不好理解,但链表就特别简单,但在有时间限制的竞赛中,很容易超时,因此如果实在要使用链表,注意使用链表的类型,Java提供的两种实现链表的方式
|
存储 算法 Java
反转链表(剑指offer 24)
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。