zoukankan      html  css  js  c++  java
  • 翻转链表的递归实现

      翻转链表的循环实现很简单,但是递归实现想了很久也没有想到,看了下网上帖子才恍然大悟,基本原理就是利用递归到最后一个节点,然后反递归的方向,利用链表的性质(可以找到当前节点之后的任何节点的位置),把当前节点的指针赋给原链表后一个指针的Next指针。本质上利用的还是链表和递归的基本性质。

    //递归方式
    Node * reverseList(List head)
    {
        //如果链表为空或者链表中只有一个元素
        if(head == NULL || head->next == NULL)
        {
            return head;
        }
        else
        {
            //先反转后面的链表,走到链表的末端结点
            Node *newhead = reverseList(head->next);
            //再将当前节点设置为后面节点的后续节点
            head->next->next = head;
            head->next = NULL;
            
            return newhead;
        }
    }
  • 相关阅读:
    flask-scripts
    mysql相关
    day9:函数
    day8:文件操作
    day7:set和深浅copy
    day6:前两小节补充
    day5:字典dict
    day4:数据结构list
    piano class 13
    day3:数据类型 str
  • 原文地址:https://www.cnblogs.com/everydaykeepgoing/p/7809938.html
Copyright © 2011-2022 走看看