首页 > 编程语言 >用java写一个逆置单链表

用java写一个逆置单链表

时间:2023-07-16 15:32:36浏览次数:36  
标签:单链 ListNode next current java 节点 逆置

用Java写一个逆置单链表

单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用。逆置单链表是指将原来的单链表中的节点顺序颠倒过来。

在这篇文章中,我们将使用Java来实现逆置单链表的功能。我们将会介绍单链表的基本概念,并给出逆置单链表的实现代码。让我们开始吧!

单链表的基本概念

首先,让我们来了解一下单链表的基本概念。单链表由一个个节点组成,每个节点包含两部分内容:数据元素和指向下一个节点的引用。最后一个节点的引用为空。

下图是一个包含5个节点的示例单链表:

+---+    +---+    +---+    +---+    +---+
| 1 | -> | 2 | -> | 3 | -> | 4 | -> | 5 |
+---+    +---+    +---+    +---+    +---+

在上述单链表中,节点1包含数据元素1和指向节点2的引用。节点2包含数据元素2和指向节点3的引用,以此类推。节点5是最后一个节点,它的引用为空。

逆置单链表的实现

现在,让我们来看一下如何实现逆置单链表的功能。我们可以使用迭代的方式来逆置单链表。

首先,我们需要维护三个指针:currentpreviousnext。初始时,current指向头节点,previousnext都为null

然后,我们需要通过循环遍历单链表,将当前节点的引用反转。具体步骤如下:

  1. 将当前节点的下一个节点保存到临时变量next中。
  2. 将当前节点的引用指向前一个节点,即将current.next设置为previous
  3. 将前一个节点的引用更新为当前节点,即将previous设置为current
  4. 将当前节点更新为下一个节点,即将current设置为next
  5. 重复步骤1-4,直到遍历完整个链表。

最后,将最后一个节点的引用设置为null,将新的头节点返回。

下面是用Java实现逆置单链表的代码示例:

class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
    }
}

class LinkedList {
    ListNode reverse(ListNode head) {
        ListNode current = head;
        ListNode previous = null;
        ListNode next = null;

        while (current != null) {
            next = current.next;
            current.next = previous;
            previous = current;
            current = next;
        }

        return previous;
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建一个包含5个节点的单链表
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(2);
        ListNode node3 = new ListNode(3);
        ListNode node4 = new ListNode(4);
        ListNode node5 = new ListNode(5);

        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;

        // 创建一个LinkedList对象
        LinkedList linkedList = new LinkedList();

        // 逆置单链表
        ListNode reversedHead = linkedList.reverse(node1);

        // 打印逆置后的单链表
        ListNode current = reversedHead;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
    }
}

以上代码中,我们创建了一个包含5个节点的单链表,然后通过LinkedList类中的reverse方法来逆置单链表。最后,我们打印逆置后的单链表的值。

总结

本文介绍了单链表的基本概念,并给出了使用Java实现逆置单链表的示例代码。逆置单链表可以通过迭代的方式实现,需要维护三个指针来完成反转操作。希望本文对你理解

标签:单链,ListNode,next,current,java,节点,逆置
From: https://blog.51cto.com/u_16175431/6738377

相关文章

  • 用java创建一个单链表
    使用Java可以很方便地创建和操作数据结构,其中包括单链表。单链表是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。这种数据结构可以用于实现队列、栈、链表等等。在本文中,我们将学习如何使用Java创建一个单链表,并演示一些基本的操作。首先,我......
  • 数据结构练习笔记——创建有序单链表
    创建有序单链表【问题描述】为从键盘终端输入的m个整数创建带头结点的有序单链表存储结构,使输入的数据元素在单链表中按照元素值递增有序。【输入形式】第一行:单链表中元素个数m第二行:单链表中的m个整数【输出形式】按递增有序形式输出m个整数【样例输入】513245【......
  • day07 7.1 Java中的面向对象之类与对象
    day077.1Java中的面向对象之类与对象【一】类与对象【1】类定义规范类与对象的关系类是实体对象的概念模型,笼统的,不具体的,比如人类、动物类、鸟类对象又称为实体,类具体化的表现小红/小明小猫一号/小狗一号对象中有属性,有方法不同对象属性是独有的方法是共......
  • JavaScript:将对象数组映射到字典
    JavaScript:将对象数组映射到字典#javascript#打字稿#数据在JavaScript/TypeScript中将对象数组转换为字典的最简单方法:letdata=[{id:1,country:'Germany',population:83623528},{id:2,country:'Austria',population:8975552},{id:3,country......
  • Java性能优化-测试数组和链表在查询和添加删除时性能对比
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751上面在使用JMH时测试了Java中数组和链表在进行头部插入时的对比结果。下面分别对比在头部、中部、尾部分别进行查询和......
  • Java在指定位置添加字符串
    Java在指定位置添加字符串的实现作为一名经验丰富的开发者,我很乐意教会刚入行的小白如何在Java中实现在指定位置添加字符串的操作。在本篇文章中,我将按照以下步骤详细说明整个实现过程:获取原始字符串创建一个StringBuilder对象使用StringBuilder的insert()方法在指定位置插入......
  • Java语言支付代码
    Java语言支付代码引言随着电子商务的迅速发展,支付功能成为了每个电商平台必备的功能之一。在Java语言中,开发者可以使用各种支付SDK和API来实现支付功能。本文将介绍Java语言中支付代码的基本原理,并提供一些示例代码以帮助读者更好地理解。支付流程在介绍具体的支付代码前,我们先......
  • Java项目压测 链接被拒绝
    Java项目压测-链接被拒绝在进行Java项目压测时,有时会遇到“链接被拒绝”的问题。这意味着在压测过程中,无法与目标服务器建立连接。本文将介绍一些可能导致此问题的原因,并提供相应的代码示例来解决这个问题。原因一:服务器资源不足当服务器资源不足时,无法处理大量的并发请求,会导......
  • Java图片去噪
    Java图片去噪介绍图片去噪是一种常见的图像处理技术,可以帮助我们减少图片中的噪点,提高图像的质量和清晰度。在Java中,我们可以利用一些图像处理库来实现图片去噪的功能。本文将为你介绍如何使用Java实现图片去噪的步骤和相应的代码。流程下面是实现“Java图片去噪”的流程:步......
  • Java提供三方接口对接
    Java提供三方接口对接在现代软件开发中,很常见需要与第三方服务或接口进行对接。Java作为一种跨平台的编程语言,提供了许多开箱即用的工具和库,使得与第三方接口对接变得相对简单。接口对接的基本概念在软件开发中,接口对接是指将一个系统或应用程序与另一个系统或应用程序连接在一......