思路:
1.链表反转遍历版和递归版,递归版可以在前馈过程反转,结尾处回递结果,也可在结尾处反转然后回递,这里做了第一种
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; //11:06--11:09 class Solution2 { public: ListNode* ReverseList(ListNode* pHead) { ListNode* head=NULL, *mid = pHead, *tail=NULL; if(mid==NULL) return NULL; tail = mid->next; while(mid!=NULL){ mid->next = head; head = mid; mid = tail; tail = tail->next; } return head; } }; //11:09--11:23 class Solution { public: ListNode* ReverseList(ListNode* pHead) { return recursion(NULL, pHead); } ListNode* recursion(ListNode* last, ListNode* current){ if(current==NULL) return NULL; ListNode* next = current->next; current->next = last; ListNode *result = recursion(current, next); if(result==NULL){//都是在已经有current的情况下了 return current; }else{ return result; } } };