[LeetCode]206. Reverse Linked List

来源:互联网 发布:最短哈密顿回路算法 编辑:程序博客网 时间:2024/05/17 06:59

206. Reverse Linked List

Reverse a singly linked list. A linked list can be reversed either iteratively or recursively. Could you implement both?

分析

翻转链表可以通过迭代方式也可以通过递归方式。递归方式主要是确定递归退出条件,当head为空时返回空,当head->next为空时返回head;

源码

    // 迭代方式    ListNode* reverseList(ListNode* head) {        ListNode *iList = head;        ListNode *preNode = NULL;        while(iList) {            ListNode *tmp = iList->next;            iList->next = preNode;            preNode = iList;            iList = tmp;        }        return preNode;    }
    // 递归方式    ListNode* reverseList(ListNode* head) {        if(head == NULL) return NULL;        if(head->next == NULL) return head;        ListNode *currentNode = head->next;        ListNode *pHead = reverseList(currentNode);        currentNode->next = head;        head->next = NULL;        return pHead;    }
1 0
原创粉丝点击