首页
学习
活动
专区
圈层
工具
发布

递归:反转链表

★LeetCode206 --- 反转链表【简单题】 题目描述 ” [nh1xo1l3sg.png] 题目描述 1、解题思路 题目要求我们对一个链表中的元素进行对应的反转,并且按照最后的进阶提示,尝试一下递归和迭代两种方法来完成...递归法: 我们最终需要返回的是链表的最后一个节点,所以,我们在递归过程中,需要找到最后一个节点,然后将其逐层向上抛出。...2、代码实现 //迭代法: public ListNode reverseList(ListNode head) { ListNode pre = null;...所以,我们可以去寻找链表中第m的元素的位置,然后将第m个元素当做头结点,输入到上一道题目的代码中。在寻找过程中,我们依旧使用递归的方法去探寻,每一次传入的参数将是(head,m-1,n-1)。...我们可以结合上一次的代码,按照k的大小进行轮询,当我们确保后面的链表包含有k个节点时,就可以传入当前的头结点,以及k值 2、代码实现 public ListNode reverseKGroup(

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java实现链表

    链表 前言 一、链表的概念及结构 二、链表的分类 三、链表的实现 无头单向非循环链表实现 无头双向链表实现 具体代码 四、链表习题 五、顺序表和链表的区别 前言 推荐一个网站给想要了解或者学习人工智能知识的读者...例如,链表可以作为栈的底层数据结构,实现元素的先进后出。此外,链表还可以用于实现动态数组,支持元素的动态插入和删除。 总之,链表作为一种重要的数据结构,在编程和数据处理中发挥着重要作用。...一、链表的概念及结构 链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。...三、链表的实现 无头单向非循环链表实现 // 1、无头单向非循环链表实现 public class SingleLinkedList { //头插法 public void addFirst(int...public int size(); public void display(); public void clear(); } 无头双向链表实现 // 2、无头双向链表实现 public class

    90010

    Java如何实现单链表

    而Java中并没有显示的指针,无法得到每个元素的地址,那如何使用Java实现单链表呢?...指针域内存储着指针或链对于单链表来说,每个结点只包含一个指针域。 ? 通常会为其链表增加头结点,便于对首元结点的处理和空表、非空表的统一处理。...Java实现单链表 (1)单链表初始化:编写一个Node类来充当结点的模型。我们知道,其中有两个属性,1数据域,2指针域。 ?...(2)增加结点操作: 1在链表的最后进行插入操作:head为头节点,指向了第一个存储的数据元素结点,应用遍历进行判断是否还有下一个结点,当没有结点时则进行插入操作。 ?...结语 由于Java语言中没有指针,因此可以将每个结点包装成类,利用其中一个成员属性将一个一个单独的结点连接起来。对于数据结构,语言的选择不会影响它的表达,真正理解它的意义才更为重要。

    1.1K00

    Java链表 (1) :实现链表的基本操作

    链表的概念与结构 1.1 什么是链表 链表是一种物理存储结构上不连续,但是在逻辑结构上连续存储的结构。数据元素的逻辑顺序通过链表中的引用链接次序实现。...1.2 链表的结构 实际中的链表结构非常多样,那么以下组合起来可以有8中链表结构: 单向或者双向 带头或者不带头 循环或者非循环 我们主要掌握的有两种结构: 无头单向非循环链表:结构简单,这种结构在笔试面试中出现较多...无头双向链表:在Java集合框架中LinkedList底层实现就是无头双向循环链表。 2. 链表的实现 这里主要实现的是无头单向非循环链表,通过自我实现一遍链表,可以更好的理解链表这一结构。...首先给出要实现的链表接口: public interface ILinkedList { //头插法 void addFirst(int data); //尾插法 void...⻓度 int size(); //删除整个链表 void clear(); //遍历链表 void display(); } 定义一个类来实现这个接口,并且在这个类中使用静态内部类来定义表示一个节点类

    37910

    链表反转(递归和非递归方式)的正确姿势

    ,首先一直迭代到链尾也就是递归基判断的准则,然后再逐层返回处理到开头。...总结来说,链表翻转操作的顺序对于迭代来说是从链头往链尾,而对于递归是从链尾往链头。 下面我会用详细的图文来剖析其中实现的细节。...1、非递归(迭代)方式 迭代的方式是从链头开始处理,如下图给定一个存放5个数的链表。...最后一步: 2、递归方式 我们再来看看递归实现链表翻转的实现,前面非递归方式是从前面数1开始往后依次处理,而递归方式则恰恰相反,它先循环找到最后面指向的数5,然后从5开始处理依次翻转整个链表。...返回到头 3、代码 以下是我的Java是实现代码: public class ListNode { int value; ListNode next; ListNode(int value

    1.9K30
    领券