java单向链表的实现实例

yizhihongxing

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日

相关文章

  • iOS开发中常见的项目文件与MVC结构优化思路解析

    iOS开发中常见的项目文件与MVC结构优化思路解析 前言 在iOS开发中,我们经常会使用MVC来组织我们的项目结构。但是,当项目越来越复杂的时候,MVC的设计模式就会变得越来越麻烦,我们需要更好的优化和设计来帮助我们更好的维护和开发我们的应用程序。这篇文章将详细讲解iOS常见的项目文件和MVC结构,并提供优化思路,以帮助您更好地组织和管理您的iOS应用程序。…

    other 2023年6月26日
    00
  • 只要十步就能学会用CSS建设网站 CSS建站的十个步骤(图文教程)

    只要十步就能学会用CSS建设网站 步骤一:创建HTML文件 首先,创建一个HTML文件,可以使用任何文本编辑器。将文件保存为.html扩展名。 示例: <!DOCTYPE html> <html> <head> <title>我的网站</title> <link rel=\"styl…

    other 2023年9月6日
    00
  • logback 实现给变量指定默认值

    Logback 实现给变量指定默认值攻略 在 Logback 中,可以使用 <defaultValue> 元素来为变量指定默认值。当变量没有被设置时,将会使用默认值。下面是详细的攻略,包含两个示例说明。 步骤一:配置 Logback 上下文 首先,需要在 Logback 配置文件中配置 Logback 上下文。通常,这个配置文件是 logback…

    other 2023年8月9日
    00
  • Android音视频开发之MediaCodec的使用教程

    下面就是对题目《Android音视频开发之MediaCodec的使用教程》的详细讲解攻略。 一、什么是MediaCodec MediaCodec是Android SDK提供的一个非常重要的音视频编解码API。使用MediaCodec API可以完成音视频编码、解码的功能,其中不仅包含基于软编、硬编两种方式的编码,还有对应的软解、硬解方式的解码。在Androi…

    other 2023年6月27日
    00
  • Win10 1607发布非安全累积更新KB4541329(附补丁+更新介绍)

    Win10 1607发布非安全累积更新KB4541329攻略 1. 更新介绍 Win10 1607发布非安全累积更新KB4541329是针对Windows 10版本1607的一个重要更新。该更新主要解决了一些已知的问题和改进了系统的稳定性和性能。以下是该更新的主要内容: 修复了一个导致系统在某些情况下出现蓝屏错误的问题。 优化了系统的性能,提高了系统的响应速…

    other 2023年8月3日
    00
  • Vue.js 递归组件实现树形菜单(实例分享)

    介绍:Vue.js是一个开源JavaScript框架,用于构建用户界面。它的易于上手、快速、灵活等特点在前端开发中受到了广泛的认可。Vue支持响应式和组件化的应用程序开发,并且非常适合开发动态单页应用程序(SPA)。 在Vue.js中,递归组件是一种非常实用的技术,可以在树形结构等数据可视化场景下提供非常高效、易于扩展的数据绑定方法。这篇文章将详细介绍如何使…

    other 2023年6月27日
    00
  • 汇编语言系列之汇编实现字符串操作

    汇编语言系列之汇编实现字符串操作 前言 本文主要介绍如何使用汇编语言实现字符串操作。包括字符串拼接、字符串反转、字符串查找等操作。 字符串格式 在汇编语言中,字符串通常被表示为字符序列,以$0$结尾。字符串的长度为字符的数量,不包括结尾的$0$。 例如,下面两个字符串表示相同的内容: str1 db ‘Hello, World!’, 0 str2 db ‘H…

    other 2023年6月20日
    00
  • python生成guid

    Python生成GUID 在许多应用程序中,需要生成全局唯一标识符(GUID),以确保数据的唯一性。 Python中有许多方法可以生成GUID,这篇文章将介绍其中两种比较常见的方法。 方法1:使用uuid模块 Python标准库中的uuid模块,可以用来生成GUID。具体实现如下: import uuid # 生成一个UUID对象 guid = uuid.u…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部