Java 数据结构链表操作实现代码

下面是关于“Java 数据结构链表操作实现代码”的完整攻略。

1.链表实现原理

链表是一种经典的数据结构,其主要原理是通过指针将一系列节点连接起来。链表中的节点包含两个部分,一个是数据域,用于存放数据;另一个是指针域,用于指向下一个节点的位置。链表的头结点指向链表的第一个节点,最后一个节点的指针指向空。

2.链表的基本操作

链表的基本操作包括创建链表、插入节点、删除节点、遍历链表等。下面逐一介绍它们的实现。

2.1 创建链表

创建链表的基本方法就是依次创建每个节点,并将节点指针连接起来,最后返回头结点。以下是一个创建链表的示例代码:

public static Node createLinkedList(int[] array) {
    if (array == null || array.length == 0) {
        return null;
    }
    Node head = new Node(array[0]);
    Node p = head;
    for (int i = 1; i < array.length; i++) {
        Node node = new Node(array[i]);
        p.next = node;
        p = node;
    }
    return head;
}

其中,Node 是链表的节点类,包含值和指向下一个节点的指针。这个函数的输入是一个整型数组,输出为创建的链表的头节点。

2.2 插入节点

插入节点需要分为两个阶段,首先需要找到需要插入的位置,然后创建插入的节点并将指针连接起来。以下是一个插入节点的示例代码:

public static Node insertNode(Node head, int position, int value) {
    if (head == null || position < 1) {
        return null;
    }
    // 插入到第一个节点之前
    if (position == 1) {
        Node node = new Node(value);
        node.next = head;
        return node;
    }
    Node p = head;
    // 找到第position-1个节点
    for (int i = 1; i < position - 1 && p != null; i++) {
        p = p.next;
    }
    if (p == null) {
        return null;
    }
    Node node = new Node(value);
    node.next = p.next;
    p.next = node;
    return head;
}

这个函数的输入是头结点、插入位置和插入值,输出为新链表的头节点。

2.3 删除节点

删除节点也需要分为两个阶段,首先需要找到需要删除的位置,然后将指针连接起来。以下是一个删除节点的示例代码:

public static Node deleteNode(Node head, int position) {
    if (head == null || position < 1) {
        return null;
    }
    // 删除第一个节点
    if (position == 1) {
        return head.next;
    }
    Node p = head;
    // 找到第position-1个节点
    for (int i = 1; i < position - 1 && p != null; i++) {
        p = p.next;
    }
    if (p == null || p.next == null) {
        return null;
    }
    p.next = p.next.next;
    return head;
}

这个函数的输入是头结点和需要删除的位置,输出为新链表的头节点。

2.4 遍历链表

遍历链表就是依次输出每个节点的值,以下是一个遍历链表的示例代码:

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

这个函数的输入是头结点,输出是依次输出节点值。

3.示例说明

3.1 示例 1:创建链表并遍历

下面介绍如何使用以上的代码创建链表并遍历。首先创建一个数组作为链表的元素,然后使用 createLinkedList 函数创建链表,最后使用 printLinkedList 函数遍历链表。

public static void main(String[] args) {
    int[] array = {1, 2, 3, 4, 5};
    Node head = createLinkedList(array);
    printLinkedList(head);
}

输出结果:

1 2 3 4 5 

3.2 示例 2:插入节点并遍历

下面介绍如何使用以上的代码插入节点并遍历链表。首先创建一个数组作为链表的元素,然后使用 createLinkedList 函数创建链表,接着使用 insertNode 函数在第三个位置插入元素 6,最后使用 printLinkedList 函数遍历链表。

public static void main(String[] args) {
    int[] array = {1, 2, 3, 4, 5};
    Node head = createLinkedList(array);
    head = insertNode(head, 3, 6);
    printLinkedList(head);
}

输出结果:

1 2 6 3 4 5 

以上就是关于“Java 数据结构链表操作实现代码”的完整攻略,希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 数据结构链表操作实现代码 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解

    解析从源码分析常见的基于Array的数据结构动态扩容机制的详解 什么是动态扩容机制 动态扩容机制是指,当一个数据结构达到其容量限制时,自动增加容量大小以继续存储新的数据。在动态扩容时,需要考虑到时间和空间的平衡,因为扩容需要分配新的内存空间,在处理大量数据时,需要尽可能减少空间浪费和分配内存的时间消耗。 基于Array的数据结构 Array是一种连续存储的数…

    数据结构 2023年5月17日
    00
  • 带你了解Java数据结构和算法之队列

    带你了解Java数据结构和算法之队列 一、介绍 队列是已知的最古老和最常用的数据结构之一。它是一个线性结构,它遵循一个先进先出的原则,在日常生活中我们也很容易碰到队列。比如:在银行排队办理业务、队列中的电影厅、厨房中的菜单等等。 队列的操作主要有两种:入队(enqueue)和出队(dequeue)。插入操作只能在队尾进行,删除操作只能在队头进行。还有一些常用…

    数据结构 2023年5月17日
    00
  • Python实现的数据结构与算法之双端队列详解

    Python实现的数据结构与算法之双端队列详解 什么是双端队列? 双端队列是一种具有队列和栈的性质的数据结构,可以在队列两端进行插入和删除操作。双端队列可以实现两端的操作,因此可以在队列两端进行插入和删除操作,既可以像队列一样先进先出,也可以像栈一样后进先出。 双端队列的操作 add_front(item):在队头插入一个元素; add_rear(item)…

    数据结构 2023年5月17日
    00
  • java实现队列数据结构代码详解

    Java实现队列数据结构代码详解 1. 队列数据结构简介 队列(Queue)是一种先进先出(FIFO)的数据结构,支持在一端插入元素,在另一端删除元素并返回删除的元素。其操作包括入队(enqueue)和出队(dequeue)。 2. 队列实现方法 队列可以通过数组或链表来实现。其中,数组实现的队列称为顺序队列,链表实现的队列称为链式队列。 2.1 顺序队列 …

    数据结构 2023年5月17日
    00
  • Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)

    Java数据结构及算法实例:快速计算二进制数中1的个数 简介 本文将介绍在Java中快速计算二进制数中1的个数的算法。本算法是一种基于位运算的算法,其核心思想是利用位运算的快捷性,将原问题转化为每次计算一位是否为1的问题,使得计算速度大大提升。 背景知识 在理解本算法之前,需要了解Java中的一些背景知识: 1. 位运算 Java中的位运算符有如下几个: &…

    数据结构 2023年5月17日
    00
  • Java数据结构之稀疏数组的实现与应用

    Java数据结构之稀疏数组的实现与应用 什么是稀疏数组 稀疏数组是一种刻画二维数组中许多元素值都为0的特殊数据结构。它可以提高存储空间的利用率,实现对数据的压缩和优化,减少不必要的处理,提升程序的运行效率。 在稀疏数组中,只有非零元素被存储,而这些元素的索引信息和具体数值的信息都会被记录下来。 稀疏数组的实现与应用 实现步骤 创建原始的二维数组,存入多个元素…

    数据结构 2023年5月17日
    00
  • C++如何实现BitMap数据结构

    下面我将详细讲解C++如何实现BitMap数据结构的完整攻略,包含以下几个方面: 什么是BitMap数据结构 如何使用C++实现BitMap数据结构 BitMap数据结构的应用示例说明 1. 什么是BitMap数据结构 BitMap数据结构也叫位图,是一种非常简单而高效的数据结构,它主要是用来对大量数字进行存储和操作的。所谓BitMap,就是将一个数字序列通…

    数据结构 2023年5月17日
    00
  • Java数据结构之循环队列简单定义与用法示例

    Java数据结构之循环队列简单定义与用法示例 什么是循环队列? 循环队列是一种数据结构,它具有先进先出(FIFO)的特点,即最先进队列的元素总是被最先取出。不同于普通队列,循环队列的尾指针指向数组的头部,因此可以实现循环利用数组空间,提高存储空间的利用率,避免因队列的操作大量移动数组元素而导致的时间浪费。 循环队列的基本操作 循环队列的基本操作包括:入队、出…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部