Java数据结构--双向链表

java数据结构——双向链表详解 双向链表提供了向前遍历,也可以向后遍历整个链表,其中的问题关键就在每个链结点有两个指向其他链结点的引用。而不是一个,第一个像普通链表一样指向下一个链结点,第二个指向前一个链结点 ,如图:借用算计算法与结构书中的图片 双向链表的缺点是每次插入或者删除一个链结点的时候,要处理四个链结点的引用,而不是两个;两个链接前一个链结点,两个链接后一个链结点,由于多了两个引用,链结点的占用空间也变得大了一些 插入... 阅读详情

Java实现双向链表

双向链表:每个结点有包含两个指针,一个指向前一个结点的引用,一个指向后一个结点的引用;

结点类

package DoubleLink;

/**
 * Created by Zz on 2017/5/5 0005.
 */
public class Node {
    public Node next;
    public Node previous;
    private int data;

    public Node(int data) {
        this.data = data;
    }
    public String toString(){
        return data+" ";
    }

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public boolean equals(Object other) {
        Node temp = null;
        if (other instanceof Node) {
            temp = (Node)other;
            if (temp.getData() == this.getData()) {
                return true;
            }else  {
                return false;
            }
        }else {
            return false;
        }
    }
}

DoubleLink实现

package DoubleLink;

/**
 * Created by Zz on 2017/5/5 0005.
 */
public class DoubleLink {
    private Node first;
    private Node end;
    public void addFirst(int data) {
        Node node = new Node(data);
        if (first!=null) {
            node.next = first;
            first.previous = node;
            first = node;
        } else {
            first = node;
            end = node;
        }
    }

    public void addEnd(int data) {
        Node node = new Node(data);
        if(end!=null) {
            end.next = node;
            node.previous = end;
            end = node;
        } else {
            first = node;
            end = node;
        }
    }

    public Node find(int data) {
        Node temp = new Node(data);
        Node f = first;
        while (f!=null) {
            if (f.equals(temp))
                break;
            else
                f = f.next;
        }
        return f;
    }

    public void delete(int data) {
        Node node = find(data);
        if (node!=null) {
            node.previous.next = node.next;
            node.next.previous = node.previous;
        }
    }

    public void update(int ydata,int mdata) {
        Node node = find(ydata);
        node.setData(mdata);
    }

    public String toString() {
        StringBuffer stringBuffer = new StringBuffer();
        Node temp = first;
        while (temp!=null) {
            if (temp == end)
                stringBuffer.append("["+temp.getData()+"]");
            else
                stringBuffer.append("["+temp.getData()+"]"+",");
            temp = temp.next;
        }
        return stringBuffer.toString();
    }
}

运行结果:

 public static void main(String[] args) {
        DoubleLink doubleLink = new DoubleLink();
        doubleLink.addFirst(10);
        doubleLink.addFirst(20);
        doubleLink.addFirst(30);
        doubleLink.addEnd(40);
        doubleLink.addEnd(50);
        System.out.println(doubleLink.toString());
    }
[30],[20],[10],[40],[50]
Python地理空间库安装指南:从gdal到geopandas的完整流程 本文详细介绍了Python地理空间库的完整安装流程,包括gdal、rasterio和geopandas等核心库的安装与配置。通过Anaconda环境管理和conda-forge频道,帮助开发者高效解决依赖问题,确保地理空间数据处理环境的稳定运行。 阅读详情

相关推荐

基于深度学习的UWB门禁检测

针对基于UWB技术智能门禁管理系统,由于测距误差或非视距原因导致门禁产生不合理动作的现象。分析如何采用基于深度学习的方法,通过对TWR测距数据、TWR监听数据、到达角度差(PDOA)、信道脉冲响应(CIR)等数据维度进行深度学习,利用 TensorFlow建立相应的推导模型,对卡片姿态进行更加精准可靠的检测,从而更好完成闸机开合控制。

tenth_quadrant的博客 2026

Java——数据结构之双向链表

文章目录1.单链表的实现(1)定义一个节点类型(2)头插法(3)尾插法(4)根据下标插入节点(5)查找关键字(6)删除第一次出现的关键字(7)删除所有出现的关键字key(8)节点的回收(9)链表打印展示2.完整代码展示完!   接上篇Java——数据结构之单链表   在之前的学习中,我们主要了解了很多 Java 的 基本语法,但是 在之后的 Java学习中,了解 基础 数据结构的知识 非常重要,数据结构的思想 可以帮助我们更加清晰 明白的了解 Java 的解题思路等等。   今天我们就来开始学习 实现一

rain67的博客 2659

Vanna 2.0:基于LLM的智能文本到SQL框架,实现企业级数据查询与权限控制

文本到SQL技术是自然语言处理与数据库交互的重要桥梁,它允许用户使用日常语言直接查询数据库,无需编写复杂的SQL语句。其核心原理是利用大语言模型理解用户意图,并结合检索增强生成技术,将自然语言问题转换为准确的结构化查询语言。这项技术的价值在于大幅降低了数据访问门槛,提升了业务人员的数据自助分析能力,并能在金融分析、销售报表、运营监控等场景中实现实时数据洞察。Vanna 2.0作为一个开源框架,通过引入用户感知的智能体架构和行级安全策略,解决了企业级应用中的多租户数据隔离与权限控制等关键问题,使得自然语言数据

weixin_42629522的博客 544

Java数据结构 双向链表

Java数据结构 双向链表 单链表       单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向表中的下一个节点,而最后一个节点则指向一个空值NULL。单向链表只可向一个方向遍历。       单链表的一个优点是结构简单,但是它也有一个缺点,即在单链表中只能通过一...

Zack_orz的博客 499

新建菜单Office被替换为腾讯文档 - 解决方案

右键新建菜单中的Office被替换为腾讯文档。原因是安装了腾讯文档软件,此软件安装时会自动将新建菜单中的Office替换为腾讯文档,下文介绍解决方案。

NSJim的博客 2928

无符号整数、带符号整数溢出问题

让我们详细讲解一下带符号整数溢出和无符号整数溢出问题中,符号标志位 (SF)、零标志位 (ZF) 和进位标志位 (CF) 的行为方式

weixin_49342084的博客 2087

【数据结构 3】双向链表及其Java实现

一、双向链表 1.1 简介 双向链表也叫双向表,是链表的一种,它由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用来存储数据,其中一个指针域用来指向其后继结点,另一个指针域用来指向前驱结点。 链表的头结点的数据域不存储数据,指向前驱结点的指针域值为null,指向后继结点的指针域指向第一个真正存储数据的结点。 1.2 结点API设计 类名 Node 构造方法 Node(T t,Node pre,Node next):创建Node对象 成员变量 1 T item:存储数据

Java技术工坊 479

从Chiplet到UCIE:D2D互联技术如何重塑半导体设计生态

本文探讨了D2D互联技术在半导体设计中的革命性作用,从Chiplet到UCIE标准的演进如何重塑行业生态。详细分析了D2D互联的技术本质、架构选择及UCIE标准带来的变革,并展望了未来光学D2D和3D集成等趋势。高速互联接口技术的突破为AI加速器和计算芯片提供了更高带宽和能效。

weixin_29292535的博客 931

java双向链表结构_Java数据结构——双向链表

背景问题:1、管理单向链表查找的方向只能有一个。2、单向链表不能自我删除,删除不方便双向链表示意图注意:每一个双向链表都有两个头节点,一个pre(指向前一个节点);next(指向后一个节点)双向链表的增删改查增加数据:思路:1、先遍历双线链表找到最后一个节点(temp)2、temp.next = newHeroNode3、newHeroNode.pre = temp删除数据:思路:遍历双向链表,找...

weixin_29037455的博客 175

保姆级教程:用GEE(Google Earth Engine)复现CASA模型计算NPP,附完整数据集清单与Python代码

本文提供了一份详细的保姆级教程,指导如何使用GEE(Google Earth Engine)复现CASA模型计算NPP(净初级生产力)。教程涵盖环境准备、关键数据集获取与处理、Python代码实现全流程,以及结果验证与常见问题解决方案,帮助生态学研究者高效完成NPP计算。

weixin_28707365的博客 334

编译原理2024期末复习(面向做题,大题速学)【太原理工大学】

归约-归约”冲突就是在项目集规范族一个状态中两个。

m0_63181421的博客 1万+

java数据结构之双向链表

public class DoubleLinkedList<E> { private Node first;//指向第一个元素 private Node last;//指向最后一个元素 private int length=0;//链表长度 class Node { private Node previous; priva...

qq_30242987的博客 189

Vue2+OpenLayers动态绘制两个经纬度并计算距离(提供Gitee源码)

动态绘制两个经纬度并计算它们之间的距离。

黄团团的个人博客 365

java 双向链表结构_Java 数据结构 双向链表

Java 数据结构 双向链表基本特点单向链表:只有指向下一个结点的引用(后驱)双向链表:既有指向下一个结点的引用(后驱),也有指向上一个结点的引用(前驱)优点双向链表在查找元素的时候,速度比之单向链表会更快拥有前驱后驱,操作更灵活缺点增加删除结点操作更繁琐一些占用的资源更多,数据存储率相比单向链表更低(生产中使用单链表比双链表更多)存储结构在这里插入图片描述Java代码package linkli...

weixin_28753113的博客 299

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数据结构--双向链表(Java)

数据结构–双向链表(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点 图示 代码 package link; public cla...

归子莫的博客 417

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JAVA数据结构--LinkedList双向链表

JAVA数据结构--LinkedList双向链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。...

三分自留地 319

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java数据结构,双向链表的实现

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。DoubleListNode.java为结构体类,DoubleLinkedList.java为实现类,MyList.java为方法接口。设置head和last两个哑元(其数据域并不存放数据),只是为了方便插入删除。双链表,需要一个指向前驱的指针,后指向后继元素的指针,以及数据域。插入的话,需要修改四个指针指向(修改顺序具有一定的规则!

m0_63622279的博客 649

数据结构之双向链表详细(java版)

前言 双向链表是一种线性表,常见的线性表还有单向链表、栈、队列,本篇主要是分析双向链表的结构,以及如何使用java自己实现一个双向链表。 1、单向链表 在分析双向链表前,有必要先看看单向链表的结构图,方便对比双向链表数据结构。 ...

夏夜凉月 697

java双向链表结构_【数据结构】双向链表(java)

(本文参考此博客)一.双向链表的结构:二.双向链表的优点:1.插入节点和删除节点简单。2.可双向遍历。三.双向链表的java实现:class DoubleLinkedList{DoubleLinkedList pre;DoubleLinkedList next;int val;static DoubleLinkedList head;static DoubleLinkedList tail;pub...

weixin_28869849的博客 194

java 双向链表_Java数据结构之链表的原理及LinkedList的部分源码剖析

一、为什么要学习数据结构?做为一名程序员,不管你是用什么编程语言,数据结构是取底层的东西。就相当于盖楼的地基一样,地基做不好,上边再好也没有用。在高级语言中,一般会对这些基础的数据结构进行封装,我们学要学习这些基础的东西吗? 当然是的,只有知道这些基础的东西,我们才能更好地使用语言封装好的api。举个最简单的例子,在Java中,List的实现类有ArrayList,LinkedList,Vecto...

weixin_39603823的博客 134

Java数据结构之双向链表

使用Java实现双向链表,并且使用Iterable接口来实现双向链表的遍历

timewilltell12的博客 662

java 数据结构与算法——链表(双向链表)

java 数据结构与算法——链表(双向链表) 单向链表的缺点分析 对上图分析: 1)遍历方法和单链表一样,只是可以向前,也可以向后 2)添加 (1)先找到双向链表的最后一个节点 (2)让最后一个节点的next指向添加的节点temp.next = heroNode (3)让添加的节点的pre指向最后一个节点heroNode.pre = temp 3)插入跟单链表大致相同,只需将插入节点的pre与前后节点相连接即可 4)修改的思路和单链表相同 5)删除 (1)因为是双向来链表,因此,我们可以自我删除某个节点

weixin_43825740的博客 294

Java数据结构-双向链表的实现

我们将从以下几点开始阐述: 双向链表的概述 🔜 单双链表之间的区别 🔜 双向链表的实现思路🔜 双向链表的代码实现与分析🔜 结论

算法萌新一枚 1114

Java 数据结构之双向链表

线性表链式存储结构:将采用一组地址的任意的存储单元存放线性表中的数据元素。 链表又可分为: 单链表:每个节点只保留一个引用,该引用指向当前节点的下一个节点,没有引用指向头结点,尾节点的next引用为null。 循环链表:一种首尾相连的链表。 双向链表:每个节点有两个引用,一个指向当前节点的上一个节点,另外一个指向当前节点的下一个节点。 下面给出线性表双向链表的实现:java中Link...

muranfei的博客 296

java数据结构之--双向链表

链表,双向链表

wcguang博客 585

Java 中的数据结构和算法,第 5 部分:双向链表

使用双向链表和循环链表及其算法进行高级搜索和排序

ITnababy的博客 292
上一篇: Java设计模式--单例类
下一篇: Java数据结构--二叉树
Zero_INT
博客等级 码龄12年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值