Java数据结构之链表(动力节点之Java学院整理)

Java数据结构之链表(动力节点之Java学院整理)

什么是链表

链表是一种数据结构,它是由一系列节点组成的,每个节点包含数据和一个指向下一个节点的指针。与数组不同,链表中的节点在内存中不是连续存储的,而是通过指针来连接。链表的基本形式包括单向链表、双向链表和循环链表。

链表的优缺点

优点

  • 可以充分利用计算机的空间,实现灵活的内存动态管理。
  • 插入和删除操作时间复杂度为O(1),相对数组快很多。

缺点

  • 随机访问性能较差,需要从头开始遍历。
  • 占用额外的空间存储指针信息。

链表的实现

链表的实现一般包括节点定义和相应的链表操作。下面是一个简单的单向链表的实现。

节点定义

public class Node{
    public int val;
    public Node next;

    public Node(int val){
        this.val = val;
    }   
}

添加节点

public Node addNode(Node head, int val){
    Node newNode = new Node(val);
    if(head == null){
        return newNode;
    }
    Node p = head;
    while(p.next != null){
        p = p.next;
    }
    p.next = newNode;
    return head;
}

删除节点

public Node deleteNode(Node head, int val){
    if(head == null){
        return null;
    }
    if(head.val == val){
        return head.next;
    }
    Node pre = head;
    Node cur = head.next;
    while(cur != null){
        if(cur.val == val){
            pre.next = cur.next;
            return head;
        }
        pre = cur;
        cur = cur.next;
    }
    return head;
}

示例

下面是一个简单的示例,展示了如何创建一个链表并添加、删除节点。

public static void main(String[] args) {
    Node head = null;
    int[] arr = {1,2,3,4,5};
    for(int i = 0; i < arr.length; i++){
        head = addNode(head, arr[i]);
    }
    printList(head);
    head = deleteNode(head, 3);
    printList(head);
}

public static void printList(Node head){
    Node p = head;
    while(p != null){
        System.out.print(p.val + " ");
        p = p.next;
    }
    System.out.println();
}

输出结果:

1 2 3 4 5 
1 2 4 5 

以上就是链表的基本实现,可以根据需要进行相应扩展,例如双向链表、循环链表等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java数据结构之链表(动力节点之Java学院整理) - Python技术站

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

相关文章

  • Netty分布式server启动流程Nio创建源码分析

    Netty是一个基于Java NIO库开发的高性能、异步非阻塞的网络编程框架,被广泛应用于分布式系统中。本文将详细讲解Netty分布式server启动流程Nio创建源码分析,包括以下内容: Netty启动流程分析 Nio创建流程分析 示例说明 1. Netty启动流程分析 Netty启动流程可以分为以下几个步骤: 创建ServerBootstrap实例 设置…

    other 2023年6月27日
    00
  • 如何禁止修改ip地址?

    如何禁止修改IP地址攻略 禁止修改IP地址可以帮助保护网络的安全性和稳定性。下面是一些步骤和示例说明,以帮助你实施这一措施。 步骤1:使用静态IP地址 使用静态IP地址可以防止用户轻易修改其IP地址。静态IP地址是在网络设置中手动配置的,而不是通过DHCP自动分配的。以下是如何设置静态IP地址的示例说明: 打开计算机的网络设置。 找到当前网络连接的设置选项。…

    other 2023年7月30日
    00
  • vbs实现右键菜单中添加CMD HERE

    添加“CMD HERE”右键菜单功能可以方便地在指定文件夹打开CMD,提高工作效率。下面是具体步骤: 1. 新建vbs文件 在任何位置新建一个文本文件,将其命名为“cmd_here.vbs”。 2. 编写vbs代码 将以下代码复制到“cmd_here.vbs”文件中: Const MenuText = "CMD HERE" Set obj…

    other 2023年6月27日
    00
  • python–判断路径是否为目录或文件

    在Python中,可以使用os模块中的path和isdir函数来判断路径是否为目录或文件。以下是使用Python判断路径是否为目录或文件的完整攻略: 首先,导入os模块。可以使用以下代码导入os模块: python import os 然后,使用os.path.isdir()函数判断路径是否为目录。例如,要判断路径/home/user/Documents是否…

    other 2023年5月9日
    00
  • android中的matrix(矩阵)

    Android中的Matrix(矩阵) 在Android开发中,我们经常需要对UI进行各种变换,比如旋转、缩放、平移等。而Matrix的作用就是完成这些变换。 Matrix简介 Matrix,翻译为矩阵,是一个含有9个元素的数组对象,它是用来实现图形变换的重要工具。在Android中,我们可以通过Matrix来完成各种图形变换,比如平移、旋转、缩放、倾斜等操…

    其他 2023年3月29日
    00
  • 干货:快速提高效率的9种WPS排版方法

    当然!下面是关于\”干货:快速提高效率的9种WPS排版方法\”的完整攻略: … 2. 使用样式和标题 WPS提供了丰富的样式和标题功能,可以帮助你快速排版文档。以下是两个示例: 样式设置:选择一段文本,然后在\”样式\”选项卡中选择合适的样式,如标题、副标题、正文等。这样可以快速应用一致的格式和样式。 标题设置:使用标题功能可以快速创建目录和导航。选择一…

    other 2023年8月19日
    00
  • R语言 install.packages 无法读取索引的解决方案

    当使用R语言中的install.packages命令安装某个包时,有时可能会出现“无法读取索引”(unable to access index)的错误消息,这时候可以按照以下步骤来解决这个问题。 步骤1:清除旧索引缓存 在R语言中,使用以下命令来清除所有旧的索引缓存: options(repos = c(CRAN = "https://cran.r…

    other 2023年6月26日
    00
  • 《halcon数字图像处理》第六章笔记

    《Halcon数字图像处理》第六章笔记 概述 本文将对《Halcon数字图像处理》第六章的内容进行梳理和总结。本章主要介绍了Halcon平台下的形态学操作、区域分割、形状分析等内容。通过本章的学习,能够掌握如何在Halcon中实现图像的细节增强、边缘提取、形状匹配等操作。 形态学操作 形态学操作是数学形态学理论在图像处理中的应用。它主要包括膨胀、腐蚀、开运算…

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