美文网首页Leetcode
Leetcode 206. Reverse Linked Lis

Leetcode 206. Reverse Linked Lis

作者: SnailTyan | 来源:发表于2018-10-14 12:54 被阅读3次

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    1. Description

    Reverse Linked List

    2. Solution

    • Iteratively
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) {
            ListNode* pre = nullptr;
            ListNode* next = nullptr;
            ListNode* current = head;
            while(current) {
                next = current->next;
                current->next = pre;
                pre = current;
                current = next;
            }
            return pre;
        }
    };
    
    • Recursively
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) {
            return reverse(head, nullptr);        
        }
        
    private:
        ListNode* reverse(ListNode* current, ListNode* pre) {
            if(!current) {
                return nullptr;
            }
            ListNode* next = current->next;
            if(next) {
                current->next = pre;
                return reverse(next, current);
            }
            current->next = pre;
            return current;
        }
        
    };
    

    Reference

    1. https://leetcode.com/problems/reverse-linked-list/description/

    相关文章

      网友评论

        本文标题:Leetcode 206. Reverse Linked Lis

        本文链接:https://www.haomeiwen.com/subject/udpzaftx.html