当前位置:   article > 正文

LeetCode 206. Reverse Linked List 题解(C++)_leetcode 简略题解c语言

leetcode 简略题解c语言

LeetCode 206. Reverse Linked List 题解(C++)


题目描述

  • Reverse a singly linked list.

思路

迭代
  • 设置三个指针分别指向当前结点,当前结点的前一结点和当前结点的后一结点,之后遍历整个链表,使当前结点指向上一结点,并依次将三个指针向下一结点移动。
递归
  • 对当前结点的下一结点做递归,返回倒置后的链表,之后使当前结点的下一结点指向当前结点,当前结点指向NULL。

代码

迭代
class Solution
{
public:
    ListNode* reverseList(ListNode* head) 
    {
        if (head == NULL)
        {
            return NULL;
        }
        ListNode *previousNode = NULL;
        ListNode *currentNode = head;
        ListNode *nextNode = head->next;
        while (nextNode != NULL)
        {
            currentNode->next = previousNode;
            previousNode = currentNode;
            currentNode = nextNode;
            nextNode = currentNode->next;
        }
        currentNode->next = previousNode;
        return currentNode;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
递归
class Solution
{
public:
    ListNode* reverseList(ListNode* head) 
    {
        if (head == NULL || head->next == NULL)
        {
            return head;
        }
        ListNode *p = reverseList(head->next);
        head->next->next = head;
        head->next = NULL;
        return p;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/209856
推荐阅读
相关标签
  

闽ICP备14008679号