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

下面是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日

相关文章

  • golang使用ssh远程连接服务器并执行命令

    golang使用ssh远程连接服务器并执行命令 在开发过程中,我们经常需要使用ssh协议连接到远程服务器并执行命令。golang中提供了一个ssh包,可以方便地实现ssh连接服务器。本文将解释如何使用golang实现ssh连接服务器并执行命令。 1. 安装ssh包 ssh包是官方标准库中的一部分,您可以直接使用它,而无需安装其他软件包。要使用ssh包,请在代…

    其他 2023年3月28日
    00
  • mysql回表查询

    MySQL回表查询攻略 以下是MySQL回表查询的完整攻略: 什么是回表查询? 回表查询是MySQL中的一种查询方式,它是指在使用非聚簇索引(即辅助索引)进行查询时,需要回到聚簇索引中查找数据的过程。这种查询方式会增加查询的开销,因此需要注意优化。 步骤1:创建表和索引 首先,创建一个包含多个字段的表,并为其中的某些字段创建索引。例如: CREATE TAB…

    other 2023年5月6日
    00
  • Android组合控件实现功能强大的自定义控件

    Android组合控件是由多个已有控件构成更高级别的控件,可以使我们快速构建复杂的用户界面和功能强大的自定义控件。在下面的攻略中,我将为大家提供详细的步骤和两个示例说明以供参考。 1. 理解组合控件 在理解组合控件之前,我们需要了解一些布局和控件相关的知识。在Android中,我们可以使用布局来放置控件,如LinearLayout、RelativeLayou…

    other 2023年6月27日
    00
  • H3C IRF2的技术原理及典型应用

    H3C IRF2技术原理及典型应用攻略 技术原理 H3C IRF2技术(Intelligent Resilient Framework)是一种可应用于大规模接入、汇聚网络的创新技术。该技术将多台网络设备(最多支持9台)虚拟成一个单一、可管理、可扩展的逻辑设备,成为网络内的一个“大的盒子”,并能够对外提供通用的网络服务。IRF2技术的核心思想是通过不同节点设备…

    other 2023年6月27日
    00
  • Java动态脚本Groovy获取Bean技巧

    Java动态脚本Groovy获取Bean技巧 在Java中使用Groovy可以轻松地使用动态脚本获取Bean。这里介绍一些Java动态脚本Groovy获取Bean的技巧。 导入Groovy库 Groovy是一种基于JVM的动态脚本语言,所以它可以和Java代码一起运行。为了使用Groovy获取Bean,需要在Java项目中导入Groovy库。 示例代码 @G…

    other 2023年6月27日
    00
  • Win10系统资源管理器经常崩溃重启的原因及解决方法

    Win10系统资源管理器崩溃及解决方法 一、问题描述 Win10系统中的资源管理器经常出现崩溃重启的情况,给用户带来很大的困扰。这种情况一般表现为: 突然出现蓝屏; 界面卡顿; 打开文件夹时卡在“搜索”界面; 窗口不断刷新,变换大小等等。 这种情况会导致使用体验变得非常糟糕,甚至会给用户带来数据损失的风险。因此,我们必须要找到解决方法。 二、原因分析 造成W…

    other 2023年6月27日
    00
  • 关于php中一些字符串总结

    关于PHP中一些字符串的总结 在PHP中,字符串处理不可避免,了解一些字符串相关的函数和技巧可以提高编码效率。下面是一些关于PHP中字符串的总结。 字符串的基本操作 字符串的拼接 字符串的拼接可以使用.操作符或$a .= $b的方式来实现。例如: $a = "Hello"; $b = "World"; echo $a …

    other 2023年6月20日
    00
  • js函数和this用法实例分析

    欢迎来到我们网站的“js函数和this用法实例分析”教程。本文将详细讲解JavaScript函数和this关键字用法,并提供两个实例说明。 什么是JavaScript函数 JavaScript函数是执行特定任务的可重复使用的代码块。函数可以接收参数并返回值。函数可以在程序中共享和重复利用,这样可节省大量代码。在JavaScript中可以声明函数,也可以将函数…

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