java实现单链表增删改查的实例代码详解

Java实现单链表增删改查的实例代码详解

单链表是一种常见的数据结构,它由多个节点组成,每个节点包含一个值和一个指针,指向下一个节点。单链表可以用于实现栈、队列等数据结构。

在Java中,我们可以使用类来表示一个单链表。下面是单链表节点类的示例代码:

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

这个类表示单链表中的一个节点,val是节点的值,next是指向下一个节点的指针。

实现插入节点

要在单链表中插入一个新节点,需要找到要插入的位置,然后修改它前面的节点的指针。以下是在单链表中插入一个新节点的示例代码:

public void insertNode(ListNode head, ListNode newNode, int position) {
    if (head == null) {
        return;
    }
    if (position == 0) {
        newNode.next = head;
        head = newNode;
        return;
    }
    int index = 0;
    ListNode cur = head;
    while (cur != null) {
        if (index == position - 1) {
            newNode.next = cur.next;
            cur.next = newNode;
            break;
        }
        cur = cur.next;
        index++;
    }
}

这个方法接受三个参数:head表示单链表的头节点,newNode表示要插入的新节点,position表示要插入的位置。如果headnull,说明链表为空,直接返回。如果position为0,说明要插入到链表的开头,这时只需要将新节点的指针指向头节点即可。如果position大于0,则需要遍历链表找到要插入的位置,然后修改指针。

实现删除节点

要从单链表中删除一个节点,需要先找到要删除的节点的前一个节点,然后修改它的指针。以下是在单链表中删除一个节点的示例代码:

public void deleteNode(ListNode head, int position) {
    if (head == null) {
        return;
    }
    if (position == 0) {
        head = head.next;
        return;
    }
    int index = 0;
    ListNode cur = head;
    while (cur.next != null) {
        if (index == position - 1) {
            cur.next = cur.next.next;
            break;
        }
        cur = cur.next;
        index++;
    }
}

这个方法的参数与上一个方法相似。如果headnull,直接返回。如果position为0,说明要删除的是头节点,只需要将头节点指向下一个节点即可。如果position大于0,则需要遍历链表找到要删除的节点的前一个节点,然后修改指针。

实现修改节点

要修改单链表中的一个节点的值,只需要找到这个节点,然后修改它的值即可。以下是修改单链表中一个节点的示例代码:

public void modifyNode(ListNode head, int position, int newVal) {
    if (head == null) {
        return;
    }
    int index = 0;
    ListNode cur = head;
    while (cur != null) {
        if (index == position) {
            cur.val = newVal;
        }
        cur = cur.next;
        index++;
    }
}

这个方法的参数与前两个方法相似。如果headnull,直接返回。查找要修改的节点,然后修改节点的值。

实现查找节点

要在单链表中查找一个节点,需要遍历整个链表,比对各个节点的值,直到找到匹配的节点。以下是查找单链表中一个节点的示例代码:

public int searchNode(ListNode head, int value) {
    if (head == null) {
        return -1;
    }
    int index = 0;
    ListNode cur = head;
    while (cur != null) {
        if (cur.val == value) {
            return index;
        }
        cur = cur.next;
        index++;
    }
    return -1;
}

这个方法的参数与前面的方法相似。如果headnull,直接返回-1。遍历链表查找匹配的节点,如果找到则返回位置,否则返回-1。

示例说明

下面是一个使用单链表插入、删除、修改和查找节点的示例:

ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
node1.next = node2;
node2.next = node3;

// 插入节点
ListNode newNode = new ListNode(4);
insertNode(node1, newNode, 2);

// 删除节点
deleteNode(node1, 1);

// 修改节点
modifyNode(node1, 2, 5);

// 查找节点
int position = searchNode(node1, 3);

这段代码创建了一个含有3个节点的单链表,然后插入一个新节点,删除节点2,修改节点3的值,最后查找节点3的位置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现单链表增删改查的实例代码详解 - Python技术站

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

相关文章

  • nodejs的安装使用与npm的介绍

    Node.js是一个能够在服务器端运行JavaScript的开放源代码,跨平台的运行环境。它是构建在Chromium的V8 JavaScript引擎上的。 安装Node.js 1. Windows环境下的安装 在Windows环境下,你可以直接在Node.js官网(https://nodejs.org/en/)下载Windows安装包,根据安装向导完成安装。…

    node js 2023年6月8日
    00
  • vs code怎么搭建NodeJs的开发环境? vscode运行nodejs代码的技巧

    下面来详细讲解在 VS Code 中如何搭建NodeJs的开发环境,并介绍运行NodeJs代码的技巧。 搭建NodeJs的开发环境 步骤一:下载Node.js 下载Node.js最新版本,下载链接为:https://nodejs.org/en/download/ 步骤二:安装Node.js 安装Node.js,可以直接使用默认配置,一路“下一步”即可。 步骤…

    node js 2023年6月8日
    00
  • Windows下安装NodeJS的详细步骤

    下面是Windows下安装NodeJS的详细步骤的完整攻略。 1.下载NodeJS安装包 打开NodeJS的官网(https://nodejs.org),在页面中选择“Download”菜单,点击对应的下载链接,选择msi安装文件(Windows Installer)进行下载。 2.安装NodeJS 下载完成后,双击msi安装文件,按照提示完成安装。在安装过…

    node js 2023年6月8日
    00
  • JavaScript Typescript基础使用教程

    JavaScript Typescript基础使用教程 本教程旨在介绍JavaScript和Typescript的基础使用,帮助初学者快速上手。以下是本教程的主要内容: JavaScript基础使用 基本语法 JavaScript是一种脚本语言,最常见的用途是在网页中添加动态交互效果。JavaScript的基本语法与其他编程语言类似,包括变量声明、数据类型、…

    node js 2023年6月8日
    00
  • javascript object oriented 面向对象编程初步

    JavaScript 面向对象编程初步 前言 JavaScript 是一种面向对象的编程语言,面向对象编程(Object Oriented Programming)是一种编程范式,它将数据抽象为对象,对象之间相互关联,通过这种方式组织代码和数据,使得代码更加易读易懂、可维护性更高。 在 JavaScript 中,我们可以使用函数、对象和原型等方式来实现面向对…

    node js 2023年6月8日
    00
  • js事件(Event)知识整理

    JavaScript 事件(Event)知识整理 本文将介绍JavaScript中的事件(Event)知识,主要内容包括事件类型、事件绑定、事件传播、事件代理等。 事件类型 JavaScript中的事件类型比较多,常见的事件类型如下: 点击事件:click 双击事件:dblclick 鼠标移动事件:mousemove 键盘按下事件:keydown 页面加载事…

    node js 2023年6月8日
    00
  • 了解javascript中变量及函数的提升

    当 JavaScript 运行一个函数时,会进行两个阶段的操作: 预编译阶段,它会扫描整个函数代码,收集函数中的变量声明,将其存储在内存中。在这个阶段,JavaScript 引擎会将函数中的变量声明提升到函数体的顶部,并给它赋上默认值 undefined。这个过程就是 变量提升(Hoisting)。 执行阶段,逐行执行函数中可执行的语句。 下面是一个变量提升…

    node js 2023年6月8日
    00
  • Nodejs 发送Post请求功能(发短信验证码例子)

    这是一个使用Node.js发送POST请求的攻略,使用一个发短信验证码的例子来说明。要实现这个功能,我们需要使用Node.js的http模块和querystring模块。 发送Post请求的步骤 引入 http 和 querystring 模块: javascript const http = require(‘http’); const querystri…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部