p9 翻转单链表(leetcode206)

Posted repinkply

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p9 翻转单链表(leetcode206)相关的知识,希望对你有一定的参考价值。

一:解题思路

链表是递归定义的,所以关于链表的大部分问题也可以用递归来解决。当然也可以不用递归来解决这个问题。这里来介绍2种方法,一种是递归方法,一种是非递归的方法。

二:完整代码示例 (C++版和Java版)

递归版C++

class Solution 
{
public:
    ListNode* reverseList(ListNode* head) 
    {
        ListNode* ret = NULL;

        if (head == NULL)
        {
            ret = NULL;
        }
        else if (head->next == NULL)
        {
            ret = head;
        }
        else
        {
            ListNode* guard = head->next;
            ret = reverseList(head->next);
            guard->next = head;
            head->next = NULL;
        }

        return ret;
    }
};

递归版Java

class Solution 
{
    public ListNode reverseList(ListNode head) 
    {
          ListNode ret=null;
          
          if(head==null)
          {
              ret=null;
          }
          else if(head.next==null)
          {
              ret=head;
          }
          else
          {
              ListNode guard=head.next;
              ret=reverseList(head.next);
              guard.next=head;
              head.next=null;
          }
          
          return ret;
    }
}

迭代法C++:

class Solution 
{
public:
    ListNode* reverseList(ListNode* head) 
    {
        ListNode* cur = head;
        ListNode* pre = NULL;

        while (cur != NULL)
        {
            ListNode*  next = cur->next;
            cur->next = pre;

            pre = cur;
            cur = next;
        }

        return pre;
    }
};

迭代法Java:

class Solution 
{
    public ListNode reverseList(ListNode head)
    {
          ListNode cur=head;
          ListNode pre=null;
          
          while(cur!=null)
          {
              ListNode next=cur.next;
              cur.next=pre;
              
              pre=cur;
              cur=next;
          }
          
          return pre;
    }
}

 

以上是关于p9 翻转单链表(leetcode206)的主要内容,如果未能解决你的问题,请参考以下文章

微软面试题: LeetCode 206. 反转链表 出现次数:3

Leetcode 206 反转一个单链表

算法热门:反转单链表(LeetCode 206)

算法热门:反转单链表(LeetCode 206)解法二

Leetcode练习(Python):链表类:第206题:反转链表:反转一个单链表。

206.Reverse Linked List