鏈表定義

class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }
非遞歸實現很簡單,只需要遍歷一遍鏈表,在遍歷過程中,把遍歷的節點一次插入到頭部。

public ListNode reverseList(ListNode head) { ListNode prev = null; while(head!=null){ ListNode tmp = head.next; head.next = prev; prev = head; head = tmp; } return prev; }
遞歸實現:翻轉head->為首的鏈表, 然后head變為尾部節點

public ListNode reverseList(ListNode head) { if(head==null||head.next ==null) return head; ListNode prev = reverseList(head.next); head.next.next = head; head.next = null; return prev; }