Java链表的天然递归结构性质图文与实例分析

所属分类: 软件编程 / java 阅读数: 86
收藏 0 赞 0 分享

本文实例分析了Java链表的天然递归结构性质。分享给大家供大家参考,具体如下:

有关链表,参考之前的文章学习

要求:使用递归删除链表中指定的所有元素值。

一、图文分析

假设有这么一个链表,如下图:

分析:基于链表的宏观语意(递归是问题更小的子过程)进行分析

我们可以把上述链表看成是一个头结点后面挂接了一个更小的链表组成,如下图:

此时我们可以把链表概括成如下的链表结构:

1、在一个头结点+更小的链表基础上,从更小的链表中删除指定元素,得到一个全新的链表--图中红丝的方块。

此时我们需要关心如何根据红丝的方块代码的链表构建出原问题的解-------也就是包括了原来头结点(头结点e)在内的情况。

2.判断头结点e是否是需要被删除的元素值,若头结点是不需要被删除的,此时的链表结构为头结点e+红色方块,否则为红色方块,相关结构图如下:

 

 

 二、代码实现

package LeetCodeSubject;
/*
 * 使用虚拟头节点
 * */

class Solution3 {

  public ListNode removeElements(ListNode head, int val) {

    if (head == null)
      return null;

    ListNode res = removeElements(head.next, val);

    if (head.val == val)
      return res;
    else {
      head.next = res;
      return head;
    }
  }


  public static void main(String[] args) {
    int[] nums = {1, 2, 6, 3, 4, 5, 6};

    ListNode head = new ListNode(nums);

    System.out.println(head);

    ListNode res = (new Solution()).removeElements(head, 6);
    System.out.println(res);

  }
}

结果如下:

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

更多精彩内容其他人还在看

Java实现一个简单的文件上传案例示例代码

这篇文章主要介绍了Java实现一个简单的文件上传案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解在spring中使用JdbcTemplate操作数据库的几种方式

这篇文章主要介绍了详解在spring中使用JdbcTemplate操作数据库的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

java中的switch case语句使用详解

这篇文章主要介绍了java中的switch case语句使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

深入理解Java 线程池

这篇文章主要介绍了Java 线程池的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

详解mybatis #{}和${}的区别、传参、基本语法

这篇文章主要介绍了mybatis #{}和${}的区别、传参、基本语法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)

这篇文章主要介绍了MyBatis 中 ${}和 #{}的正确使用方法,本文给大家提到了MyBatis 中 ${}和 #{}的区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Mybatis中的 ${} 和 #{}区别与用法

这篇文章主要介绍了Mybatis中的 ${} 和 #{}区别与用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Maven安装过程图文详解

这篇文章主要介绍了Maven安装过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

SpringBoot登录拦截配置详解(实测可用)

这篇文章主要介绍了SpringBoot登录拦截配置详解(实测可用),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

JAVA 内存溢出案例汇总

这篇文章主要介绍了JAVA 内存溢出案例的汇总,文中讲解非常细致,帮助各位工作学习时避免内存溢出,感兴趣的朋友可以了解下
收藏 0 赞 0 分享
查看更多