Java双向链表按照顺序添加节点的方法实例

yizhihongxing

下面是Java双向链表按照顺序添加节点的方法实例的完整攻略。

1. 创建双向链表节点类和链表类

首先需要定义一个双向链表节点类,和一个双向链表类。代码如下:

public class DLLNode {
    int val;
    DLLNode prev, next;

    public DLLNode(int val, DLLNode prev, DLLNode next) {
        this.val = val;
        this.prev = prev;
        this.next = next;
    }
}

public class DoublyLinkedList {
    DLLNode head, tail;
    int size;

    public DoublyLinkedList() {
        head = new DLLNode(0, null, null);
        tail = new DLLNode(0, head, null);
        head.next = tail;
        size = 0;
    }
}

以上代码中, DLLNode 类表示链表节点,包含 valprevnext 三个属性,其中 val 表示该节点的数值, prev 表示该节点的前一节点, next 表示该节点的后一节点。 DoublyLinkedList 类表示双向链表,包含 headtailsize 三个属性,其中 head 表示链表头节点, tail 表示链表尾节点, size 表示链表节点数。

2. 实现双向链表节点的添加方法

(1) 在链表末尾添加节点

在双向链表的末尾添加节点是比较简单的,只需要在链表的尾节点前插入新节点即可。代码如下:

public void addNode(int val) {
    DLLNode newNode = new DLLNode(val, tail.prev, tail);
    tail.prev.next = newNode;
    tail.prev = newNode;
    size++;
}

以上代码中, addNode 方法实现了在双向链表的末尾添加节点的操作,首先创建一个新的节点,然后将新节点插入到链表的尾节点前面,最后使得尾节点的 prev 属性指向新节点。

(2) 在链表中按顺序添加节点

在双向链表中按照顺序添加节点需要先判断当前的节点数,然后再遍历链表找到应该插入位置的前一节点,然后将新节点插入到前一节点和前一节点的后一节点之间。代码如下:

public void addNodeInOrder(int val) {
    DLLNode newNode = new DLLNode(val, null, null);
    if (size == 0) {
        newNode.prev = head;
        newNode.next = tail;
        head.next = newNode;
        tail.prev = newNode;
    } else {
        DLLNode cur = head.next;
        while (cur != tail && cur.val < val) {
            cur = cur.next;
        }
        newNode.prev = cur.prev;
        newNode.next = cur;
        cur.prev.next = newNode;
        cur.prev = newNode;
    }
    size++;
}

以上代码中, addNodeInOrder 方法实现了在双向链表中按照顺序添加节点的操作,首先创建一个新的节点,然后判断链表是否为空,如果为空,则将新节点插入到头节点和尾节点之间,否则遍历链表找到应该插入位置的前一节点,然后将新节点插入到前一节点和前一节点的后一节点之间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java双向链表按照顺序添加节点的方法实例 - Python技术站

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

相关文章

  • win7鼠标右键一直转圈不能使用该如何解决?

    Win7鼠标右键一直转圈不能使用解决攻略 在Win7中,有时当右键点击某个文件或文件夹时,鼠标图标一直转圈,无法弹出菜单选项。这种情况通常是由于Windows操作系统在处理文件或资源上出现了错误,导致右键菜单无法正常加载。下面分为以下两个步骤,帮助你解决鼠标右键不能用的问题。 步骤一:检查系统文件是否存在损坏 Win7系统文件损坏是鼠标右键无法使用的常见原因…

    other 2023年6月27日
    00
  • 爱思助手3.65版本出现应用程序正常初始化失败的问题

    问题现象描述: 用户在打开爱思助手3.65版本时出现应用程序正常初始化失败的问题,导致无法正常使用软件。 解决步骤: 步骤一:卸载老版本爱思助手 打开电脑的“控制面板”; 选择“程序”; 找到并选择爱思助手; 点击“卸载”; 按照提示完成卸载过程。 步骤二:下载并安装较新版本的爱思助手 打开有关网站:http://www.i4.cn; 点击网页上方“IE浏览…

    other 2023年6月20日
    00
  • Springboot整合zookeeper实现对节点的创建、监听与判断的案例详解

    下面将详细讲解“Springboot整合zookeeper实现对节点的创建、监听与判断的案例详解”的完整攻略。 环境准备 首先,我们需要准备好以下环境: JDK 1.8 或以上版本 Maven 3.5 或以上版本 ZooKeeper 3.6.0 或以上版本 IntelliJ IDEA 或其他Java IDE 创建Spring Boot项目 第一步,我们需要创…

    other 2023年6月20日
    00
  • C++ getcwd函数获取项目运行路径方法详解

    C++ getcwd函数获取项目运行路径方法详解 介绍 getcwd是一个C++标准库的函数,用于获取当前工作目录的路径名。在某些情况下,需要找出项目的运行路径,以便正确地访问项目中的文件和其他资源。 步骤 以下是一个获取项目运行路径的示例代码: #include <iostream> #include <unistd.h> int …

    other 2023年6月27日
    00
  • 苹果watchOS7 Beta 2 推送 watchOS7 开发者预览 Beta 2更新内容一览

    苹果watchOS7 Beta 2 推送 watchOS7 开发者预览 Beta 2更新内容一览 简介 苹果watchOS7 Beta 2已经推送,开发者可以通过 https://developer.apple.com/download/ 上直接下载安装。 本文将详细讲解watchOS7 Beta 2的更新内容。 更新内容 以下是watchOS7 Beta …

    other 2023年6月26日
    00
  • Windows Server 2012的配置与部署

    Windows Server 2012的配置与部署 Windows Server 2012是微软推出的一个基于Windows 8内核的服务器操作系统,拥有更加强大的性能和功能。本文将介绍如何在计算机上进行Windows Server 2012的配置和部署。 配置硬件和准备安装介质 在部署Windows Server 2012之前,需要检查硬件设备的兼容性以及…

    其他 2023年3月28日
    00
  • Go语言的http/2服务器功能及客户端使用

    Go语言的http/2服务器功能及客户端使用 什么是HTTP/2 HTTP/2是HTTP协议的最新版本,它是先前HTTP/1.x版本的更新。HTTP/2在语法上很大程度上借鉴了SPDY的设计,是Google在2012年提出的一种协议,目标是提高现有HTTP/1.x版本的效率。 HTTP/2主要优势包括: 多路复用:通过在同一个连接上进行多个请求和响应而不是建…

    other 2023年6月25日
    00
  • js oncontextmenu事件使用详解

    请看下文,这里将详细讲解关于“js oncontextmenu事件使用详解”的完整攻略。 什么是oncontextmenu事件? oncontextmenu事件是JavaScript中的一种鼠标事件,当用户在一个元素上右键单击时触发该事件。常用于在网页中定义自定义的右键菜单。 使用oncontextmenu事件的基本语法 element.oncontextm…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部