| 12345678910111213141516171819202122232425262728293031323334353637 | 
							- /**
 
-  * Definition for singly-linked list.
 
-  * type ListNode struct {
 
-  *     Val int
 
-  *     Next *ListNode
 
-  * }
 
-  */
 
- func reverseList(head *ListNode) *ListNode {
 
- 	reverseRecurse(&head)
 
- 	return head
 
- // return reverseIter(head, nil)
 
- }
 
- func reverseIter(head, tail *ListNode) *ListNode {
 
- 	if head == nil {
 
- 		return tail
 
- 	}
 
- 	curr := head
 
- 	head = head.Next
 
- 	curr.Next = tail
 
- 	return reverseIter(head, curr)
 
- }
 
- func reverseRecurse(head **ListNode) {
 
- 	first := *head
 
- 	if first == nil {
 
- 		return
 
- 	}
 
- 	rest := first.Next
 
- 	if rest == nil {
 
- 		return
 
- 	}
 
- 	reverseRecurse(&rest)
 
- 	first.Next.Next = first
 
- 	first.Next = nil
 
- 	*head = rest
 
- }
 
 
  |