[LeetCode] Problem 206 - Reverse Linked List

Reverse a singly linked list.

Example

Input: 1->2->3->4->5->NULL

Output: 5->4->3->2->1->NULL

Follow up

A linked list can be reversed either iteratively or recursively. Could you implement both?

Code

1
2
3
4
5
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode cur = head;

while (cur != null) {
ListNode next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}

return prev;
}