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日

相关文章

  • java 数据结构之堆排序(HeapSort)详解及实例

    Java 数据结构之堆排序(HeapSort)详解及实例 什么是堆排序 堆排序是一种树形选择排序,它的特点是不需要建立临时数组存放已排序的元素,而是直接在原数组上进行排序,因此空间复杂度比较小,时间复杂度为 $O(nlogn)$。 堆排序中需要用到的数据结构是堆,它是一种特殊的二叉树。堆分为大根堆和小根堆,大根堆满足任何一个非叶子节点的值都不小于其子节点的值…

    数据结构 2023年5月17日
    00
  • 数据结构 数组顺序存储详细介绍

    数据结构数组顺序存储详细介绍 什么是数组顺序存储? 数组是最基本的数据结构之一,在计算机程序中使用广泛。在数组中,存储的元素类型相同且占用相同的内存空间,可以通过下标进行快速访问和修改。数组可以使用不同的方法来存储在内存中,其中最简单的方法是数组顺序存储。 数组顺序存储是指将元素按照顺序依次存储在内存中的一块连续地址中,可以方便地进行随机访问。这种方式与链式…

    数据结构 2023年5月17日
    00
  • JavaScript 数据结构之散列表的创建(2)

    下面是详细讲解“JavaScript 数据结构之散列表的创建(2)”的完整攻略。 散列表(哈希表) 散列表是一种数据结构,使用哈希函数将键映射到索引。散列表可以在常量时间 O(1) 中进行插入、删除和查找操作,但也具有碰撞冲突问题。 碰撞冲突问题 在散列表中,当两个不同的键通过哈希函数映射到了同一个索引位置时,就会发生碰撞冲突问题。解决碰撞冲突问题的方法有很…

    数据结构 2023年5月17日
    00
  • Java数据结构之List的使用总结

    非常感谢您对本网站的关注。Java数据结构之List的使用总结是一个非常重要的主题,这里将为您详细介绍。 1. List是什么 在Java中,List是一种非常实用的数据结构,它代表了一个元素的有序集合,其中的每个元素都可以用一个整数索引来标识。List允许多个元素重复,同时还可以在集合的任意位置插入或者删除元素。 Java中的List主要分为两类:Arra…

    数据结构 2023年5月17日
    00
  • 使用C语言构建基本的二叉树数据结构

    下面是使用C语言构建二叉树数据结构的步骤和示例: 1. 定义二叉树结构体类型 定义一个二叉树的结构体,包含节点值、左右子节点等信息: typedef struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; } TreeNode; 2. 实现创建二叉树的函数 实现一个函…

    数据结构 2023年5月17日
    00
  • Java 数据结构与算法系列精讲之二叉堆

    Java 数据结构与算法系列精讲之二叉堆 什么是二叉堆? 二叉堆是一种基于完全二叉树的数据结构,它分为大根堆(MaxHeap)和小根堆(MinHeap)。大根堆的每个节点的值都大于(或等于)它的子节点的值,小根堆的每个节点的值都小于(或等于)它的子节点的值。 二叉堆的操作 二叉堆主要有以下几种操作: 插入元素:将元素插入到堆的最后一个叶子节点,然后通过上滤操…

    数据结构 2023年5月17日
    00
  • 常用的Java数据结构知识点汇总

    常用的Java数据结构知识点汇总 简介 Java中的数据结构是Java程序开发中非常重要的一部分。掌握常用的数据结构知识点是编写高效、优秀的Java程序的关键之一。本文将详细讲解Java中常用的数据结构知识点,并提供代码示例说明。 数组(Array) 数组是一组相同类型的数据集合,通过数组下标来访问数据,数组长度确定后就无法改变。在Java中,数组可以是基本…

    数据结构 2023年5月17日
    00
  • Java数据结构之加权无向图的设计实现

    Java数据结构之加权无向图的设计实现 前言 在计算机科学中,图(Graph)作为一种基本数据结构,被广泛应用于各种领域,如网络流、图像处理、计算机视觉等。本文将介绍加权无向图(Weighted Undirected Graph)的设计实现,涉及图的存储、添加边、获取特定节点的相邻节点、计算最短路径等。 设计实现 存储结构 加权无向图可以用一个邻接表数组存储…

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