java单向链表的实现实例

Java单向链表是一种非常常见的数据结构,它可以用于存储一系列的节点数据并进行相关操作。本攻略将会详细讲解Java单向链表的实现实例,其中包括链表的构造、插入、删除等操作。

一、定义链表节点类

首先,我们需要定义链表节点类,用于存储每个节点的数据以及指向下一个节点的指针。代码如下:

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

其中,val表示节点存储的数据,next表示指向下一个节点的指针。

二、创建链表

创建一个单向链表需要先定义一个头节点,然后不断地向头节点之后插入新的节点。代码如下:

ListNode head = new ListNode(0); // 定义头节点
ListNode cur = head;
for (int i = 1; i <= 5; i++) {
    ListNode node = new ListNode(i);
    cur.next = node;
    cur = cur.next;
}

上述代码中,首先定义了一个值为0的节点作为头节点,然后循环5次向链表中插入节点,每个节点的值从1到5递增。

三、插入节点

向单向链表中插入节点可以分为两种情况:插入到链表的头部和插入到链表的中间。代码如下:

1. 插入到链表的头部

ListNode node = new ListNode(6);
node.next = head.next;
head.next = node;

这里我们先新建一个节点,然后把新节点的指针指向链表的第一个节点。最后,把头节点的指针指向新节点,这样就完成了节点的插入操作。

2. 插入到链表的中间

假设我们要向上述链表中插入一个值为3的节点,代码如下:

ListNode node = new ListNode(3);
ListNode cur = head;
while (cur.next != null && cur.next.val < node.val) {
    cur = cur.next;
}
node.next = cur.next;
cur.next = node;

首先,新建一个节点并设置节点值。然后从头节点开始遍历链表,找到插入位置,即找到第一个节点值大于要插入节点值的节点位置。最后,插入节点,并调整节点指针,完成节点插入操作。

四、删除节点

从单向链表中删除某个节点需要遍历整个链表寻找待删除节点的前一个节点。代码如下:

int val = 3; // 待删除节点值
ListNode cur = head;
while (cur.next != null) {
    if (cur.next.val == val) {
        cur.next = cur.next.next;
        break;
    }
    cur = cur.next;
}

以上代码中,我们遍历整个链表,找到待删除节点的前一个节点。然后调整指针,忽略待删除节点,从而完成了节点的删除操作。

五、示例说明

示例一

我们要构造一个单向链表,值为1->2->3->4->5,并向链表中插入一个节点值为3的节点,代码如下:

ListNode head = new ListNode(0);
ListNode cur = head;
for (int i = 1; i <= 5; i++) {
    ListNode node = new ListNode(i);
    cur.next = node;
    cur = cur.next;
}

ListNode node = new ListNode(3);
cur = head;
while (cur.next != null && cur.next.val < node.val) {
    cur = cur.next;
}
node.next = cur.next;
cur.next = node;

以上代码中,首先定义头节点并循环向链表插入节点。然后,在遍历链表找到插入位置并插入节点。

示例二

我们构造一个值为1->2->3->4->5的单向链表,并从链表中删除一个节点值为3的节点。代码如下:

ListNode head = new ListNode(0);
ListNode cur = head;
for (int i = 1; i <= 5; i++) {
    ListNode node = new ListNode(i);
    cur.next = node;
    cur = cur.next;
}

int val = 3;
cur = head;
while (cur.next != null) {
    if (cur.next.val == val) {
        cur.next = cur.next.next;
        break;
    }
    cur = cur.next;
}

以上代码中,我们首先定义头节点并循环向链表插入节点。然后,遍历整个链表找到待删除节点的前一个节点,并调整指针完成了删除操作。

至此,我们完成了Java单向链表的实现实例的详细讲解。

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

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

相关文章

  • 透过Spring源码查看Bean的命名转换规则图文详解

    下面是透过Spring源码查看Bean的命名转换规则的详细攻略。 1. 确定Bean的命名转换规则 Spring中有两种常用的Bean命名转换规则,分别是默认的命名转换规则和自定义的命名转换规则。默认的命名转换规则是将Bean的名称转换成Java中的驼峰命名格式,而自定义的命名转换规则则允许用户通过实现接口来自定义Bean的命名转换规则。我们可以通过查看Sp…

    other 2023年6月27日
    00
  • Win8.1桌面图标显示不正常问题的解决方法

    Win8.1桌面图标显示异常的问题一般有两种情况:一是桌面图标变得很小或者没有了文字,二是桌面图标布局变乱了或者重叠了。下面是解决这些问题的攻略。 问题一:桌面图标变小或没有文字 步骤1:检查缩放设置 首先,我们需要检查电脑的缩放设置是否正确。在桌面上按住 Ctrl 键不放,同时滚动鼠标滚轮,调整缩放比例。如果缩放比例过小,桌面上的图标就会变得很小,无法看清…

    other 2023年6月27日
    00
  • iPadOS 13.5.1固件下载 iPadOS 13.5.1支持机型与固件下载地址

    iPadOS 13.5.1固件下载攻略 iPadOS 13.5.1是苹果公司最新发布的操作系统版本,它带来了一些修复和改进。如果你想升级你的iPad设备到iPadOS 13.5.1,下面是一个详细的攻略,包括支持的机型和固件下载地址。 支持的机型 iPadOS 13.5.1支持以下iPad设备: iPad Pro 12.9英寸(第一代及以后) iPad Pr…

    other 2023年8月4日
    00
  • SpringBoot-application.yml多环境配置详解

    下面是关于“SpringBoot-application.yml多环境配置详解”的完整攻略。 一、背景 在日常开发中,我们经常需要在不同的环境中部署我们的程序,例如测试环境、预发布环境、生产环境等等。在这些环境中,我们需要配置不同的参数,如数据库连接信息、系统日志级别等等。如果每次部署时都手动修改配置文件,既费时也容易出错。因此,我们需要一种更加自动化和统一…

    other 2023年6月25日
    00
  • C++实现的分布式游戏服务端引擎KBEngine详解

    C++实现的分布式游戏服务端引擎KBEngine详解 什么是KBEngine KBEngine是一个C++实现的分布式游戏服务端引擎,它专门为游戏开发者设计,为开发者提供了一个稳定、高效、灵活、易用的服务端框架。 KBEngine使用流程 使用KBEngine进行游戏服务器开发,具体流程如下: 安装KBEngine:可前往官网下载KBEngine。下载后,解…

    other 2023年6月27日
    00
  • django 模型中的计算字段实例

    下面我给您详细讲解“Django 模型中的计算字段实例”的完整攻略。 什么是计算字段 计算字段在 Django 中称为【属性】属性。它是通过模型中定义的方法来计算的,而不是从数据库中检索。此外,在当您需要计算某个表的特定字段时,可以使用计算字段来完成。 假设我们有一个名为 Book 的模型,该模型具有标题、作者、出版社和价格等属性。 然后,我们还需要计算折扣…

    other 2023年6月26日
    00
  • Axure RP怎么制作选项卡控件?

    Axure RP是一款强大的原型设计工具,其选项卡控件可以很好地表现页面之间的层级关系,并增强网站和应用程序中的交互性。以下是制作选项卡控件的完整攻略。 步骤一:创建选项卡组件 选中“默认控件”(默认在右侧控件面板中),找到“选项卡”组件,拖动到画布中。 调整选项卡组件的大小和位置,适合你的设计需求。 可以修改组件中的文本和元素,如背景颜色、字体、链接等。 …

    other 2023年6月27日
    00
  • laravel入门中文手册

    以下是关于“Laravel入门中文手册”的完整攻略: Laravel入门中文手册 Laravel是一个流行的PHP Web应用程序框架,它提供了许多有用的功能和工具,使开发Web应用程序变得更加容易和快速。以下是Laravel入门中文手册。 1. 安装Laravel 首先,您需要安装Laravel。您可以使用Composer来安装Laravel。在终端中,输…

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