剑指offer 面试题16:反转链表

题目:
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。

struct listNode {
    int              m_nValue;
    listNode*    m_pNext;
};

解法:

listNode* reverse_recursive(listNode* head) {
    if (head == 0 || head->m_pNext == 0) return head;
    
    listNode* p = head;
    listNode* h = reverse_recursive(head->m_pNext);
    listNode* tmp = h;
    while (tmp->m_pNext) {
        tmp = tmp->m_pNext;
    }
    tmp->m_pNext = p;
    p->m_pNext = 0;
    
    return h;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容