目 录CONTENT

文章目录

LeetCode 206.反转链表(画图分析)

小王同学
2024-03-31 / 0 评论 / 1 点赞 / 47 阅读 / 0 字

LeetCode 206.反转链表(画图分析)

力扣传送门(opens new window)

题意:反转一个单链表。

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

解题思路:

在遍历链表时,将当前节点的 next 指针改为指向前一个节点。

由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。

在更改引用之前,还需要存储后一个节点。

最后返回新的头引用。

具体看下图分解步骤:

1604779288-WXygqL-Picture1.png

1604779288-fMPcDn-Picture2.png

1604779288-jExDGV-Picture3.png

1604779444-fENrGT-Picture4.png

1604779288-GaydTj-Picture5.png

1604779288-gowIkz-Picture6.png

1604779288-VWjYQd-Picture7.png

1604779288-DyVPZm-Picture8.png

1604779288-yyhJIv-Picture9.png

1604779288-nZLbad-Picture10.png

1604779288-OLQNEW-Picture11.png

1604779288-MHParU-Picture12.png

1604779288-CaAUfb-Picture13.png

代码实现:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null){
        	return head;
        }
        ListNode pre = null;
        ListNode currNode = head;
        while(currNode != null){
        	ListNode temp = currNode.next;
        	currNode.next = pre;
        	pre = currNode;
        	currNode = temp;
        }
        return pre;
    }
}
1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区