Java实现单链表翻转实例代码

yizhihongxing

下面是Java实现单链表翻转的完整攻略。首先,要明确单链表的结构,单链表是一种数据结构,它是由一系列节点组成的,每个节点都包含了一个数据元素和一个指向下一个节点的引用。

  1. 首先定义一个单链表的节点类,包含数据元素和指向下一节点的指针。
class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}
  1. 创建一个链表的实例,并添加一些节点。例如以下代码添加了3个节点:1->2->3->null
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
  1. 创建一个新的链表翻转后的头节点,并使用一个指针指向当前节点,从头开始遍历原链表,每次将当前节点插入到新的头节点之后。循环终止条件是遍历到原链表的末尾节点null。
ListNode newHead = null;
ListNode curr = head;
while (curr != null) {
    ListNode next = curr.next;
    curr.next = newHead;
    newHead = curr;
    curr = next;
}
  1. 最后输出新链表翻转后的元素,此时新链表翻转后的顺序为:3->2->1->null
while (newHead != null) {
    System.out.print(newHead.val + "->");
    newHead = newHead.next;
}
System.out.print("null");

最后给出两个示例说明:

示例一:对于链表1->2->3->4->5,翻转后的链表为5->4->3->2->1。

ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);

ListNode newHead = null;
ListNode curr = head;
while (curr != null) {
    ListNode next = curr.next;
    curr.next = newHead;
    newHead = curr;
    curr = next;
}

while (newHead != null) {
    System.out.print(newHead.val + "->");
    newHead = newHead.next;
}
System.out.print("null");

输出结果为:5->4->3->2->1->null

示例二:对于链表1->null,翻转后的链表为1->null。

ListNode head = new ListNode(1);

ListNode newHead = null;
ListNode curr = head;
while (curr != null) {
    ListNode next = curr.next;
    curr.next = newHead;
    newHead = curr;
    curr = next;
}

while (newHead != null) {
    System.out.print(newHead.val + "->");
    newHead = newHead.next;
}
System.out.print("null");

输出结果为:1->null

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现单链表翻转实例代码 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • ios中rsa加密详解

    以下是“iOS中RSA加密详解”的完整攻略,包含两个示例说明: RSA加密的基本概念 RSA加密算法是一种非对称加密算法,它使用公钥加密数据,使用私钥解密数据。RSA加算的基本概念如下: 公钥:用于加密数据的密钥,可以公开。 私钥:用于解密的密,必须保密。 加密:使用公钥加密数据。 解密:使用私钥解密数据。 RSA加密的使用方法 以下是iOS中RSA加密的使…

    other 2023年5月9日
    00
  • mysqldatetime长度填多少

    mysqldatetime长度填多少 在MySQL中,我们经常使用DATETIME数据类型来存储时间信息。DATETIME数据类型表示一个特定的日期/时间,其格式为YYYY-MM-DD HH:MM:SS。另外,MySQL还提供了一种名为TIMESTAMP的数据类型,也可以用于存储日期/时间信息。 而关于DATETIME的一个重要参数便是它的长度,也就是我们看…

    其他 2023年3月28日
    00
  • Win7安装和配置Apache2.4服务器的详细方法

    以下是详细讲解“Win7安装和配置Apache2.4服务器的详细方法”的攻略: 准备工作 在开始安装和配置Apache2.4服务器之前,需要先进行一些准备工作。 下载Apache2.4的安装程序(apachehaus)。 下载VC运行库(Visual C++ Redistributable for Visual Studio 2015)。 关闭防火墙和杀毒软…

    other 2023年6月27日
    00
  • python函数的两种嵌套方法使用

    Python函数的两种嵌套方法使用攻略 在Python中,函数可以嵌套在其他函数中,这种嵌套可以帮助我们组织和管理代码。本攻略将详细讲解Python函数的两种嵌套方法的使用。 1. 内部函数(Inner Functions) 内部函数是指在一个函数内部定义的函数。内部函数可以访问外部函数的变量和参数,并且可以在外部函数的作用域之外被调用。下面是内部函数的使用…

    other 2023年7月27日
    00
  • tomcat如何禁止显示目录和文件列表

    Tomcat如何禁止显示目录和文件列表 Tomcat是一个使用广泛的Java Web服务器,但默认情况下在web.xml文件未配置时,Tomcat允许用户请求目录并显示该目录下的文件列表。 这可能会导致访问者获得有关站点结构和文件的敏感信息。因此,在保护Web服务器的机密性和安全性方面,禁止显示文件和目录列表是一个很好的实践。 方式一:禁用自动部署 在自动部…

    其他 2023年3月29日
    00
  • Templates实战之更优雅实现自定义View构造方法详解

    Templates实战之更优雅实现自定义View构造方法详解 背景 自定义View是Android开发的重要组成部分,而在自定义View的创建过程中,构造方法也是非常重要的一步。在很多情况下,我们需要给自定义View设置一些特殊的属性,或者在初始化的时候进行一些特殊的操作。这时,我们就需要对自定义View的构造方法进行改造,以便更好地满足我们的需求。 常规做…

    other 2023年6月25日
    00
  • Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡

    请见以下完整攻略: Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡 一、前言 Android百度地图是一款非常强大的地图工具,它集成了很多常用的地图功能,包括地图展示、搜索、定位等,也可以通过开发者的自定义需求来定制地图的样式、交互和功能。其中,本文将介绍如何在Android中使用百度地图实现搜索和定位,并自定义绘制图标并点击时弹出泡泡…

    other 2023年6月25日
    00
  • ContentType控制输出的类型是否区分大小写

    ContentType是一个HTTP头部字段,用于指示服务器返回的响应的内容类型。在某些情况下,ContentType的值是否区分大小写可能会影响到服务器的行为。 在大多数情况下,ContentType的值是不区分大小写的,这意味着不同的大小写形式都会被服务器接受并处理。例如,以下两个ContentType的值被认为是相同的: Content-Type: t…

    other 2023年8月17日
    00
合作推广
合作推广
分享本页
返回顶部