java实现数据结构单链表示例(java单链表)

下面是 Java 实现数据结构单链表的完整攻略。

简介

单链表是数据结构中的一种,用于存储一组有序的元素。单链表中,每个元素都由一个结点表示,结点中包含了一个指向下一个结点的指针。单链表的结构更加灵活,支持插入、删除等操作。

实现步骤

1. 定义节点类ListNode

单链表的每一个节点包含两个属性,分别是节点值 val 和指向下一个节点的指针 next,所以我们定义一个名为 ListNode 的类,包含这两个属性。

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

2. 定义单链表类Solution

定义一个名为 Solution 的单链表类,它具有一下功能:(1)增加一个空节点 head 充当链表的头部;(2)添加新节点;(3)删除节点;(4)查询节点。

public class Solution {
    ListNode head;

    // 添加节点
    public void addNode(int val) {
        ListNode node = new ListNode(val);
        if (head == null) {
            head = node;
            return;
        }
        ListNode temp = head;
        while (temp.next != null) {
            temp = temp.next;
        }
        temp.next = node;
    }

    // 删除节点
    public void deleteNode(int val) {
        ListNode temp = head;
        if (temp == null) {
            return;
        }
        if (temp.val == val) {
            head = temp.next;
            return;
        }
        while (temp.next != null) {
            if (temp.next.val == val) {
                temp.next = temp.next.next;
                return;
            }
            temp = temp.next;
        }
    }

    // 查询节点
    public boolean searchNode(int val) {
        ListNode temp = head;
        while (temp != null) {
            if (temp.val == val) {
                return true;
            }
            temp = temp.next;
        }
        return false;
    }
}

在上面的代码中,我们定义了一个 head 节点作为单链表的头部,接下来,我们实现了 addNodedeleteNodesearchNode 三个函数,分别用于添加新节点、删除节点和查询节点。

addNode 函数中,我们首先判断 head 是否为空,如果为空,则将新节点作为 head 的值。否则,我们遍历整个列表,直到最后一个节点为止,然后在最后一个节点的指针上挂上新节点。在 deleteNode 函数中,我们首先遍历整个列表,查找待删除的节点。如果待删除的节点为 head 节点,我们将 head 指针指向待删除节点的下一个节点。否则,我们遍历整个列表,查找待删除节点的前一个节点,然后将待删除节点的前一个节点的指针指向待删除节点的下一个节点。在 searchNode 函数中,我们遍历整个列表,查找是否有与给定值相等的节点。

3. 示例说明

示例一

Solution sln = new Solution();
sln.addNode(1);
sln.addNode(2);
sln.addNode(3);
sln.deleteNode(2);
System.out.println(sln.searchNode(2)); // 输出 false

在这个示例中,我们先实例化了一个单链表 sln,然后添加了三个节点,分别是 1、2 和 3。接下来,我们删除节点 2,再查询节点 2,结果应该是 false

示例二

Solution sln = new Solution();
sln.addNode(1);
sln.addNode(2);
sln.addNode(3);
System.out.println(sln.searchNode(2)); // 输出 true

在这个示例中,我们先实例化了一个单链表 sln,然后添加了三个节点,分别是 1、2 和 3。接下来,我们查询节点 2,结果应该是 true

总结

至此,我们完成了 Java 实现数据结构单链表的攻略。单链表是数据结构中的一种,可以进行插入、删除等灵活的操作,因此非常实用。这个攻略提供了如何用 Java 实现单链表的具体步骤,帮助开发人员快速掌握单链表的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现数据结构单链表示例(java单链表) - Python技术站

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

相关文章

  • js实现无限层级树形数据结构(创新算法)

    要实现无限层级树形数据结构,可以使用递归算法来解决。以下是该过程的详细攻略: 步骤1:准备数据 为了演示无限层级树形结构,我们需要准备一组具有父子关系的数据。数据可以是任何格式,例如在子对象节点下添加一个名为children的数组即可。 例如,假设我们有以下数据: const data = [ { id: 1, name: "Node 1&quot…

    数据结构 2023年5月17日
    00
  • C#常用数据结构和算法总结

    C#常用数据结构和算法总结 数据结构 数组(Array) 数组是一种线性数据结构,它可以在内存中连续地存储相同类型的数据。可以使用索引访问数组中的元素。数组的元素可以是任意类型。 在 C# 中,定义一个数组需要指定数组的类型和数组的大小。例如,定义一个包含 5 个整数的数组: int[] arr = new int[5]; 链表(LinkedList) 链表…

    数据结构 2023年5月17日
    00
  • 数据结构之哈夫曼树与哈夫曼编码

    一、背景 编码是信息处理的基础(重新表示信息)。 普通的编码是等长编码,例如7位的ASCIL编码,对出现频率不同的字符都使用相同的编码长度。但其在传输和存储等情况下编码效率不高。 可使用不等长编码,来压缩编码:高频字符编码长度更短,低频字符编码长度更长。   [例] 将百分制的考试成绩转换成五分制的成绩 按顺序分别编码。 按频率分别编码(高频短编码,类似于香…

    算法与数据结构 2023年4月17日
    00
  • 带你了解Java数据结构和算法之前缀,中缀和后缀表达式

    带你了解Java数据结构和算法之前缀、中缀和后缀表达式 1. 前缀表达式(Prefix Expression) 前缀表达式是指运算符位于操作数之前的表达式,也被称为波兰式。前缀表达式的优点在于,每个运算符的优先级都可以通过括号来明确,不需要考虑运算符的优先级。同时,整个表达式的意义也可以很清晰地传达。 举个例子,下面是一个前缀表达式: + * 4 5 6 /…

    数据结构 2023年5月17日
    00
  • 详解数据结构C语言实现之循环队列

    详解数据结构C语言实现之循环队列 什么是循环队列 循环队列是一种数据结构,它可以存储一组固定大小的元素,并且支持在队列尾部插入元素和在队列头部删除元素,当队列尾部没有空间时可以将队列头部空余的位置用来插入元素,实现循环的效果。循环队列的主要优点在于插入和删除元素的时间复杂度均为O(1),而不是O(n)。 如何实现循环队列 循环队列可以使用数组来实现,需要定义…

    数据结构 2023年5月17日
    00
  • 详解python数据结构之栈stack

    详解Python数据结构之栈stack 什么是栈stack 栈是一种先进后出(LIFO)的数据结构,只允许在表的一端进行插入和删除操作。栈的入口称为栈底,出口称为栈顶。栈常用于表达式求值、函数调用等场景。 栈的操作 栈的基本操作包括入栈(push)和出栈(pop)。其他常用的操作有判断栈是否为空(isEmpty)、获取栈的大小(size)和获取栈顶元素(pe…

    数据结构 2023年5月17日
    00
  • 虹科案例 | 虹科Domo商业智能,助力保险公司逃离繁杂数据池!

    金融行业的发展充满着不确定性,一个具备强大承保能力和精算专业知识的资金池,对于身处该领域的公司和个人都是十分必要的。 在全国城市联盟(NLC)的协助下成立的NCL Mutual会员制互助保险公司,为各个地区城市提供了稳定的再保险答案。,然而,面对数字化转型这场已经打响的战斗,NCL Mutual却因缺乏中心商业智能系统,在利用数据处理索赔和承保的能力受到了极…

    算法与数据结构 2023年4月17日
    00
  • 数据结构 双向链表的创建和读取详解及实例代码

    下面我为你详细讲解“数据结构 双向链表的创建和读取详解及实例代码”的完整攻略。 什么是双向链表? 双向链表是一种常见的线性数据结构,与单向链表相比,它可以在节点之间建立双向连接,使得在需要反向遍历链表时效率更高。每个节点同时保存了指向前一个节点和后一个节点的指针,因此双向链表也叫做双链表。 双向链表的创建 定义节点类 首先,我们需要定义一个表示节点的类,该类…

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