LeetCode:反转链表(链表问题)
难度: 简单
题目
反转一个单链表。
示例
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
解题思路
使用三个 ListNode,分别是prev,curr,next。curr是当前指针指向的节点,prev是curr的前一个节点,头节点的前一个节点是NULL,next是curr的下一个节点,用于遍历链表。
prev curr next NULL 1 -> 2 -> NULL prev curr next NULL <- 1 2 -> NULL prev curr next NULL <- 1 2 -> NULL curr prev next NULL <- 1 2 -> NULL prev curr next NULL <- 1 2 -> NULL prev curr next NULL <- 1 <- 2 NULL prev curr next NULL <- 1 <- 2 NULL curr prev next NULL <- 1 <- 2 NULL
代码
/** * 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) { ListNode prev = null; ListNode curr = head; while(curr != null) { ListNode next = curr.next; curr.next = prev; prev = curr; curr = next; } return prev; } }