迭代

代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head){ if(head == NULL || head->next == NULL) return head; struct ListNode * p = reverseList(head->next); head->next->next = head; head->next = NULL; return p;}
回归
- 对于下一个或者自身为NULL的节点执行返回,此返回值为逆转后的头部
- 对于中间节点:使自己的下一个节点指向自己;使自己指向的节点为空;返回头部值;
代码
if(head == NULL || head->next == NULL) return head; struct ListNode * p = reverseList(head->next); head->next->next = head; head->next = NULL; return p;