给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null。
可以用递归和迭代分别实现。
- 递归
public class ReverseList{
public ListNode reverseList(ListNode head) {
return reverse(head, null);
}
private ListNode reverse(ListNode head, ListNode rest) {
if(head == null)
return rest;
ListNode next = head.next;
head.next = rest;
return reverse(next, head);
}
}
- 迭代
public class ReverseList{
/**
* @param head: The head of linked list.
* @return: The new head of reversed linked list.
*/
public ListNode reverse(ListNode head) {
// write your code here
if(head == null)
return head;
ListNode pre = null;
ListNode next = null;
while(head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}