难度: 简单
题目
反转一个单链表。
示例
输入: 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;
}
}