数据结构(5)-双端链表

管理类联考——逻辑——真题篇——按知识分类——综合推理 29、某部门抽检了肉制品、白酒、乳制品、干果、蔬菜、水产品、饮料等﹖类商品共521种样品,发现其中合格样品515种,不合格样品6种。已知: (1)蔬菜、白酒中有2种不合格样品。 (2)肉制品、白酒、蔬菜、水产品中有5种不合格样品。 (3)蔬菜、乳制品、干果中有3种不合格样品。 根据上述信息,可以得出以下哪项? A. 乳制品中没有不合格样品。 B. 肉制品中没有不合格样品。 C. 蔬菜中没有不合格样品。 D. 白酒中没有不合格样品。 E. 水产品中没有不合格样品。 31~32题基于以下题干: 某中学举行田径运 阅读详情

双端链表是一种特殊的链表,它和普通链表的差别在于,
双端列表的链头不止含有对下一个结点的引用,还含有对链尾结点的引用,
所以双端链表可以对链头和链尾进行插入查找。
由于前面已经详细地写过链表常用方法的实现,这里就不在赘述。

双端链表示意图

package com.example.demo;

/**
 * @Description:双端列表
 * @CreateDate: Created in 2018/10/10 18:45
 * @Author: <a href="https://blog.youkuaiyun.com/pbrlovejava">arong</a>
 */
public class FirstLastLink {
    //第一个链结点
    private Link first;
    //最后一个链结点
    private Link last;
    //含参构造,将first和last赋为null
    public FirstLastLink(){
        this.first = null;
        this.last = null;
    }



    //判断链表是否为空
    public boolean isEmpty(){
        return (this.first == null);
    }

    //插入链头结点
    public void insertFirst(int data){
        Link linkFirst = new Link(data);
        if(isEmpty()){
            //当前链表为空
            this.first = linkFirst;//linkFirst(first)
            this.last = linkFirst;//linkFirst(last)
        }else{
            linkFirst.next = this.first;//linkHead -> old first
            this.first = linkFirst;//new first -> linkHead
        }

    }

    //插入链尾
    public void insertLast(int data){
        Link linkLast = new Link(data);
        if(isEmpty()){
            this.first = linkLast;
            this.last = linkLast;
        }else{
            this.last.next = linkLast;//old last -> new last
            this.last = linkLast;//linkLast(new last)
        }
    }


    //遍历链表
    public void displayLinkList(){
        Link current = this.first;//从链头开始遍历
        while (current != null){
            //当前链结点不为空即输出内容
            current.displayLink();
            //将当前链结点指向下一个链结点
            current = current.next;
        }
    }

    //删除链头
    public void deleteFirst(){
        if(isEmpty()){
            System.out.println("空链表");
        }else if(this.first.next == null){
            //链表中只有一个表头
            this.first = null;
            this.last  = null;
        }
    }





    //查找链表中的结点
    public Link find(int key){
        Link current = this.first;//将当前指向first结点
        while(current.next != null){
            //链表不为空时
            if(current.data != key ){
                //不是该数据,将current向下移动
                current = current.next;
            }else if(current.data == key){
                System.out.println("已经找到该结点");
                return current;
            }

        }
        System.out.println("没有找到该节点");
        return  null;//没有找到链结点

    }

    //链结点的删除
    public void delete(int key){
        Link current = this.first;
        Link pre = null;
        while(current.next != null){
            if(current.data == key && current == this.first){
                //要删除的是链头
                this.first = current.next;
            }else if(current.data != key){
                pre = current;//将当前链结点赋值为链前结点
                current = current.next;
            }else if(current.data == key && current.next == null){
                //要删除的是链尾
                current = null;//
                this.last = pre;
                System.out.println("已删除含"+key+"的链结点");
                return;
            }else if(current.data == key){
                //找到要删除的current
                pre.next = current.next;//删除,连接两个链结点 pre.next->current.next
                System.out.println("已删除含"+key+"的链结点");
                return;
            }
        }
        System.out.println("找不到链结点");
    }


    //链表结点
    static class Link{
        public int data;//结点中存储的数据
        public Link next;//下一个结点
        //含参构造方法
        public Link(int  data){
            this.data = data;
        }

        //输出链结点
        public void displayLink(){
            System.out.print(this.data+"->");
        }
    }

}
065、鲁棒控制基础:H∞控制简介 本文从作者调试四旋翼时PID控制器失效的实际案例出发,介绍了H∞控制的基本原理及其在飞控中的应用。文章指出传统控制方法对模型误差敏感的局限性,阐释了H∞控制通过最小化扰动到输出的传递函数无穷范数来保证系统鲁棒性的核心思想。 主要内容包括: H∞控制的数学框架,通过求解Riccati方程设计控制器 飞控中的典型应用场景,如结构不确定性建模和混合灵敏度问题 一个简化的俯仰角控制设计示例 工程实现中的常见问题:权重函数选择、控制器降阶和离散化注意事项 作者强调H∞控制虽能有效处理有界不确定性,但仍需结合工程直觉进 阅读详情

相关推荐

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

TFN_yzgd的博客 929

数据结构--双端队列

双端队列(Double-ended Queue,简称Deque)是一种具有队列和栈特性的数据结构,可以在队列的两端进行插入和删除操作。双端队列允许从前端和后端同时进行插入和删除操作,因此可以称为“两端都可以进出的队列”。双端队列的实现方式有多种,包括使用数组、链表等数据结构。具体的实现方式可以根据不同的需求和场景选择合适的方式。

m0_60593173的博客 9863

别再只抄代码了!深入理解MQ2传感器数据手册,搞定ppm换算公式

本文深入解析MQ2烟雾传感器的工作原理与ppm换算公式,从数据手册解读到数学建模,提供详细的校准与优化方法。通过实际案例和代码示例,帮助开发者准确测量气体浓度,解决常见问题,提升传感器应用的可靠性。

weixin_42713608的博客 505

数据结构-双端链表

/此时改变后为:head-->tail(之前的尾节点失效)-->node(此时可以认为是尾节点)//node(此时可以认为是头)-->head(此时之前的节点头就失效了)-->tail。//此时改变后为:head-->tail(之前的尾节点失效)-->node(此时可以认为是尾节点)if(size == 0){//如果链表为空,那么头节点和尾节点都是该同一个新增节点。if(size == 0){//如果链表为空,那么头节点和尾节点都是该同一个新增节点。}else{//如果链表一个节点都没有,直接打印[]

互联网知识分享 516

如何加快香山处理器Chisel->Verilog编译速度

相比使用默认的scala firrtl complier,使用CIRCT能够将香山代码编译到Verilog的速度提高50%左右。在执行make命令时加上MFC=1,例如make verilog MFC=1或make emu MFC=1。在本地从源码编译CIRCT,在编译完成后将circt/bin路径加入PATH中。使用GraalVM免费版作为JVM编译香山比OpenJDK快10%-20%。我们推荐使用GraalVM代替OpenJDK。使用CIRCT编译香山。

专业技术人员的归宿 866

workbench 流固耦合_基于ANSYS 2019R1全解一款双吸泵的双向流固耦合方法

一、导读对于旋转机械来说,传统设计从理论计算到手工木模图,再到模型泵的加工制造,最后进行相关性能试验。当性能试验与预期效果差距较大的时候还需要修改水力模型。这种传统的设计不仅设计周期长,而且成本也高,在没有成熟的水力模型参考的情况下做设计风险也较大。而日益强大的CFD技术为旋转机械行业的发展提供了非常有力的工具。大量工程实践证明像CFX、Fluent以及Pumplinx等流产分析软件具有较高的计算...

weixin_39604280的博客 4761

2.4 双链表

2.4 双链表

钱辉 625

Calibre LVS 问题解析

LVS常见问题与解决办法

m0_61544122的博客 2万+

数据结构 —— java 单链表、双端链表、双向链表、无序链表、有序链表

文章目录链表不同链表的特点单链表(单端链表)双端链表双向链表 链表 上面是一个单链表的存储原理图,head为头节点,它不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null。 不同链表的特点 普通链表: 节点类保留下一节点的引用。链表类只保留头节点的引用,只能...

猎人在吃肉 4539

【论文精读】Graph WaveNet-深度时空图模型

Graph WaveNet构建了一个自适应邻接矩阵,它能保留隐藏的空间依赖关系,能够自动从数据中发现未见的图结构。提出了一个有效且高效的框架,可同时捕捉空间和时间依赖关系。其核心思想是将其提出的图卷积与扩张因果卷积相结合,使每个图卷积层都能处理空间依赖关系。在交通数据集上评估了提出的模型,并以较低的计算成本获得了最先进的结果。

打酱油的葫芦娃 1009

R语言机器学习算法实战系列(十三)随机森林生存分析构建预后模型 (Random Survival Forest)

本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。

专注生信领域 2027

双端列表 —— Deque 接口概述,使用ArrayDeque实现队列和双端队列数据结构

​ Deque译为双端队列,在双向都能作为队列来使用,同时可用作栈。Deque接口的方法是对称成比例的。Deque接口继承Queue接口,因此具有Queue,Collection,Iterable的方法属性。

weixin_62458944的博客 2153

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6510

Redis 5.0数据结构之双端链表linkedlist源码解析

概述 链表可以提供高效节点重排和顺序性节点访问的方式,并且可以通过增删节点灵活的调整链表长度。Redis基于C语言开发,C语言并未内置链表,因此Redis自己实现了一系列链表,分别是双端链表linkedlist、压缩链表ziplist、快速链表quicklist等,本篇将从源码角度展现双端链表linkedlist。

MSSPLANET的博客 1027

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python算法与数据结构(5)循环双端链表

单链表是单向的,缺点是remove删除是 o(n)。 双链表: 每个链有三个元素:指向前面的指针,值,指向后面的指针。 data: maxsize, root, length method: headnode, tailnode ,append, appendleft, remove(O(1)),iter_node, iter_node_reverse(反向遍历) class Node(objec...

qq_36710311的博客 214

IDEA的使用指南

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

《Java数据结构与算法》笔记-CH5-链表-5用双端链表实现队列

//用双端链表实现队列 /** * 节点类 */ class LinkQ { private long data; public LinkQ next; public LinkQ(long d) { this.data = d; } public String toString() { return String.valueOf(this.data); } } /**

proheart的专栏 3977

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据结构5:双端链表/双向链表

数据结构5:双端链表/双向链表 双向链表/双端链表 节点定义类

qq_29606255的博客 611

数据结构和算法-5.2-双端链表&双向链表

双端链表 单链表要想在表尾插入一个链结点,需要遍历整个链表直到表尾,再进行插入,效率很低; 双端链表增加了对表尾链结点的引用,可以直接在表尾插入链结点; 下面是双端链表的实现 双端链表的使用 之前有介绍用数组实现队列,下面提供一个用双端链表实现的队列, 其中Queue是队列的基类,若有疑惑,可以先看一下前面讲队列的文章; 双向链表 传统链表存在的问题: 沿链表反向遍历比较困难,很难取得前一个链结点; 关键点: 每个链结点有两个指向其他链结点的引用,而不是一个; 缺点: 每次插入

o118abcdef的博客 234

《Java数据结构与算法》笔记-CH5-链表-3双端链表

/** * 双端链表的实现 */ class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = d; } public String toString() { return "[" + dData + "]"; } public void displayLink(

proheart的专栏 2876

数据结构学习笔记Day5-双端链表(用java实现)

一、说一下双端链表 1、关于链表 https://blog.youkuaiyun.com/qq_38401906/article/details/83715163 2、双端链表 链表中同不仅含有头节点的引用,也包含尾节点的引用,即可以从尾部插入数据。 二、用java实现双端链表的增删操作 节点: package myStudy.dataStructure.day2; /** * * @description...

qq_38401906的博客 153

python list底层数据结构_Redis的8种底层数据结构

前言Redis是一个key-value存储系统,由C语言编写。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型),这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各...

weixin_39904522的博客 275

java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part2(Redis的数据结构)~整起

java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part2(Redis的数据结构、Redis的应用场景、)~整起

https://ywmhhbaiminminai.github.io/categories/ 1082

Redis的五种基本数据类型

Redis 内部提供了多种数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。但 Redis 并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象。通过这五种不同类型的对象,Redis 可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。

weixin_43420030的博客 466

数据结构之双端链表

双端链表定义于adlist.h和adlist.c文件中,定义如下: //双端链表节点 typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode; //双端链...

lucas1018的博客 226

双端链表

双端链表与传统的链表很相似,在基本链表的基础上新增一个特性:对最后一个结点的引用。如下图所示:      与之前说到的链表相比还有一个功能是在表尾直接插入一个链结点,这样就不用普通链表一样通过遍历链表到尾部进行添加数据项了。     双端链表的操作与单链表操作区别除了可以从头部插入数据和删除数据、查找数据以及实现关键数据项的删除等,还可以实现从链表尾部添加数据。以下是代码:class Link1 {

Richard_Cai 1437

redis基础结构之双端链表

双端链表 定义 //链表信息 typedef struct list { listNode *head; //双端链表的头部节点 listNode *tail; //双端链表的尾部节点 void *(*dup)(void *ptr); //链表节点数据域拷贝 void (*free)(void *ptr); //链表节点数据域释放 ...

m0_37232228的博客 253
上一篇: Thymeleaf的th:href传递多个参数出现乱码
下一篇: 算法学习笔记(5)-堆排序
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值