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
- }
|