首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java :从简单链表中删除节点

Java是一种广泛使用的编程语言,具有跨平台、面向对象、高性能等特点。在云计算领域中,Java常被用于开发各种云原生应用、后端服务和大规模分布式系统。

简单链表是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。从简单链表中删除节点可以通过以下步骤实现:

  1. 遍历链表,找到待删除节点的前一个节点。
  2. 将待删除节点的前一个节点的指针指向待删除节点的下一个节点,跳过待删除节点。
  3. 释放待删除节点的内存空间。

删除节点的时间复杂度为O(n),其中n是链表的长度。

Java提供了丰富的数据结构和算法库,可以方便地操作链表。以下是一个示例代码,演示如何从简单链表中删除节点:

代码语言:txt
复制
public class LinkedList {
    private Node head;

    private static class Node {
        int data;
        Node next;

        Node(int data) {
            this.data = data;
            this.next = null;
        }
    }

    public void deleteNode(int key) {
        Node temp = head;
        Node prev = null;

        // 如果头节点是待删除节点
        if (temp != null && temp.data == key) {
            head = temp.next;
            return;
        }

        // 遍历链表,找到待删除节点的前一个节点
        while (temp != null && temp.data != key) {
            prev = temp;
            temp = temp.next;
        }

        // 如果找到了待删除节点
        if (temp != null) {
            prev.next = temp.next;
        }
    }

    // 省略其他操作方法...

    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.head = new Node(1);
        Node second = new Node(2);
        Node third = new Node(3);

        list.head.next = second;
        second.next = third;

        System.out.println("原始链表:");
        list.printList();

        int key = 2;
        list.deleteNode(key);
        System.out.println("删除节点 " + key + " 后的链表:");
        list.printList();
    }
}

在腾讯云的云计算服务中,推荐使用云服务器CVM来运行Java应用程序。云服务器CVM提供了高性能的计算资源,支持自定义配置和弹性扩展。您可以通过以下链接了解更多关于腾讯云云服务器CVM的信息:腾讯云云服务器CVM

此外,腾讯云还提供了丰富的云原生服务,如云原生容器服务TKE、云原生数据库TDSQL、云原生函数计算SCF等,用于支持Java应用程序的开发、部署和运行。您可以根据具体需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java链表删除节点操作

只要输入要删除学生的成绩,就可以遍历该链表,并清除学生的节点, * 要结束输入时,输入“-1”,则此时会列出该链表删除的所有学生数据。...this.names = names; this.next = null; } } 2、定义指针类以及构建链表删除节点方法 /** * 程序目的:定义头结点和尾结点的节点指针,以及建链表方法和删除节点方法...,清除节点,结束输入时输入-1 import java.io.*; import java.util.*; /** * 程序目的:利用链表建立、删除和打印学生成绩 * * @author 86176...要删除的成绩其学号必须在此链表\n"); List.print(); } } } } } 输出: 学号 成绩 学号 成绩 学号 成绩 学号 成绩...要删除的成绩其学号必须在此链表 [1Allen78] [2Scott82] [3Bell78] [4Kobe77] [5Jamse59] [6Jack52] [7Gorge67] [8Yao99]

1.1K10

删除链表节点

题目描述 难度级别:简单 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点。传入函数的唯一参数为 要被删除节点 。...现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:给定你链表中值为 5 的第二个节点...提示: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。...解题思路 题目中待传递给当前函数的实参node,它是链表的某一个待删除节点,然后链表删除这个节点。...这里因为待传入的实参没有完整的链表,所以无法获取到之前节点,所以无法修改前一个节点的next指向。这时需要的是将要删除节点的值替换为它的下一个节点的值,之后要删除这个节点的next指向为下下一项。

2.4K00
  • 237 删除链表节点

    01 题目信息 题目地址: https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 请编写一个函数,使其可以删除某个链表给定的(非末尾...传入函数的唯一参数为 要被删除节点 。 现有一个链表 -- head = [4,5,1,9],它可以表示为: ?...提示: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。...02 题解 作为合集中链表下的第一题,确实是较简单的只是一个单元操作,但如果不知道链表这种数据结构也还是是完成不了的。 链表是什么?...x) { val = x; } } 现在它传一条链表的一个节点删除这个节点

    1.3K10

    删除链表的重复节点.

    前言 在一个排序的链表,存在重复的节点,如何删除链表重复的节点并返回删除后的链表头指针?例如:1->2->3->3->4->4->5,处理后为: 1->2->5。...常规思路 根据题意,我们可以知道链表的元素是排好序的。如果节点重复的话,当前节点一定与下一个节点相同。...其次,我们需要创建两个指针: 一个指向当前不重复的节点,我们将它命名为pre 一个为搜索指针,用于搜索链表与当前节点不重复的节点,我们将它命名为last 随后,我们为 pre 与 last 进行初始赋值...20220226224625702 实现代码 接下来,我们将上述思路转换为代码,如下所示: /** * 删除链表的重复节点 * @param pHead 链表节点 */ deleteDuplicatesNode...我们将文章开头所举的例子,代入上述思路,画一下它的递归栈帮助大家更好的理解,如下所示: image-20220228231355965 实现代码 接下来,我们将上述思路转换为代码,如下所示: /** * 删除链表的重复节点

    2.8K40

    2 删除链表节点

    复习链表的插入 链表的一个节点是由数据域和指针域构成,指针域的地址值为下个元素的地址。那么我们需要插入或者删除一个元素怎么处理呢? ? 先查看原始链表结构,准备将结点x插入链表。 ?...复习链表删除 上面简单介绍了带头结点的链表,在删除处理的时候同样适用,所以我们以后就直接采用带头结点的链表讲解。下面直接看看删除节点图。 ?...1 Leetcode237 删除链表节点 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点,你将只被给定要求被删除节点。...说明: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。 先思考一分钟哟! 效果更好哈!...3 java版本 ?

    1.3K20

    Swift 删除链表节点 - LeetCode

    LeetCode 题目: 删除链表节点 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点,你将只被给定要求被删除节点。...现有一个链表 -- head = 4,5,1,9,它可以表示为: 4 -> 5 -> 1 -> 9 示例1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释...: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....示例2: 输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9...说明: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。

    1.3K40

    Leetcode No.237 删除链表节点

    一、题目描述 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点。传入函数的唯一参数为 要被删除节点 。...现有一个链表 head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:给定你链表中值为 5 的第二个节点...二、解题思路 链表删除一个节点 node 的最常见方法是修改之前节点的 next 指针,使其指向之后的节点。...我们无法访问我们想要删除节点 之前 的节点,因此我们始终不能修改该节点的 next 指针。 换个思路,我们可以将想要删除节点的值替换为它后面节点中的值,然后删除它之后的节点。...因为我们知道要删除节点不是列表的末尾,所以我们可以保证这种方法是可行的。

    41840

    删除链表节点

    题目信息 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点,你将只被给定要求被删除节点。...示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,调用函数后,该链表应变为 4 -> 1 -> 9....示例 2: 输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,调用函数后,该链表应变为 4 -> 5 -> 9....说明: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。...解题 只给定了要删除节点,无法得知上一个的next指针 直接交换要删节点的值与其next存的val 删除其next节点即可 /** * Definition for singly-linked

    40720
    领券