206. 反转链表(递归方法实现)

//方法效率低,但比较好理解

题目

反转一个链表

示例

1->2->3->4->5->NULL

5->4->3->2->1->NULL

我们将每一次递归都去掉链表的尾部,并将这个尾部的"头"返回,这样就将链表连接起来

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *q=head,*p=head,*z;
        if(head==NULL||head->next==NULL)
        return head;
        while(p->next)
        {
            z=p;
            p=p->next;
        }
        z->next=NULL;
        p->next=reverseList(head);
        return p;
    }
};

效率比较低,仅供参考!

你可能感兴趣的:(206. 反转链表(递归方法实现))