数据结构(3)-链表(1)

【RT-DETR涨点改进】小目标检测、特征融合改进篇 | TGRS 2024 | RT-DETR引入CSFM上下文选择融合模块,适合多模态检测、红外小目标检测、小目标检测、遥感目标检测等任务有效涨点 本文提出了一种改进RT-DETR目标检测模型的方法,通过引入上下文选择融合模块(CSFM)显著提升复杂背景下小目标和低对比度目标的检测精度。CSFM模块采用多尺度特征融合和动态特征选择机制,有效增强模型的全局上下文感知能力,同时保留细节特征。该模块通过通道减少机制和空间信息调节,实现从粗到细的特征聚合,减少误报并提高轮廓检测精度。实验表明,改进后的RT-DETR模型在多个基准测试中表现优异,计算效率与检测精度均优于现有方法。文章还详细介绍了模块配置和yaml文件修改方法,为模型部署提供指导。 阅读详情


前面的文章中介绍了数组这种应用最广泛的数据结构,数组的使用很简单,但是数组存在着诸多不足,例如在无序数组中的查询时间复杂度为O(n),在有序数组数组中,插入的时间复杂度为O(n);本篇将介绍另一种应用广泛的数据结构-链表(LinkList),它在某些数据结构的实现中可以取代数组。

一、什么是链表

链表(LinkList)是一种数据结构。在链表中,每个数据项被包含在链结点Link中,每个Link结点实际上就是一个结点对象,它包含了对前一个结点的引用(preLink)和后一个结点(postLink)的引用,通过这个引用关系,将一个个结点Link串联成链表ListList。
示意图

二、用Java构造一个链表

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

        //遍历链表
        public void displayLink(){
            System.out.print(this.data+"->");
        }
    }
2、链表LinkList的构造:
public class LinkList {
    //第一个链结点
    private Link first;
    //含参构造,将first赋为null
    public LinkList(){
        this.first = null;
    }


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

    //插入链头结点
    public void insertFirst(int data){
        Link linkFirst = new Link(data);
        linkFirst.next = this.first;//linkHead -> old first
        this.first = linkFirst;//new first -> linkHead
    }
    }

insertHead方法

3、deleteFirst方法
//删除链头
    public void deleteFirst(){
        this.first = this.first.next;
    }
4、遍历链结点
 //遍历链表
    public void displayLinkList(){
        Link current = this.first;//从链头开始遍历
        while (current != null){
            //当前链结点不为空即输出内容
            current.displayLink();
            //将当前链结点指向下一个链结点
            current = current.next;
        }
    }
5、完整程序:
package com.example.demo;

/**
 * @Description:LinkList Demo
 * @CreateDate: Created in 2018/10/8 23:05
 * @Author: <a href="https://blog.youkuaiyun.com/pbrlovejava">arong</a>
 */
public class LinkList {
    //第一个链结点
    private Link first;
    //含参构造,将first赋为null
    public LinkList(){
        this.first = null;
    }


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

    //插入链头结点
    public void insertFirst(int data){
        Link linkFirst = new Link(data);
        linkFirst.next = this.first;//linkHead -> old first
        this.first = linkFirst;//new first -> linkHead
    }

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

    //删除链头
    public void deleteFirst(){
        this.first = this.first.next;
    }

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

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

}
6、测试链表:
@Test
    public void fun1(){
        LinkList linkList = new LinkList();
        linkList.insertFirst(1);
        linkList.insertFirst(2);
        linkList.insertFirst(3);
        linkList.insertFirst(4);
        linkList.insertFirst(5);
        System.out.println("遍历1");
        linkList.displayLinkList();
        System.out.println("删除两个链头");
        linkList.deleteFirst();
        linkList.deleteFirst();
        System.out.println("遍历2");
        linkList.displayLinkList();

    }

在这里插入图片描述

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁 阅读详情

相关推荐

优化求解器性能:当分支切割算法中的gap停滞不前时如何应对

本文深入探讨了当分支切割算法求解复杂整数规划问题时,gap停滞不前的根本原因与应对策略。文章指出gap停滞源于上界(找不到更优整数解)或下界(证明过程缓慢)提升受阻,并提供了从模型改写、自定义割平面、调整搜索策略到参数调优等一系列实战方法,帮助优化工程师有效打破求解僵局,推动gap下降。

weixin_29294597的博客 381

给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计一算法:

1.给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计一个算法: (1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次。 (2)按名次列出每个学生的姓名与分数。学生的考试成绩通过键盘输入数据建立。可采用直接选择排序、直接插入排序、Shell排序、冒泡排序、快速排序、归并排序等排序算法实现。

m0_57180439的博客 2703

AM芯片性能测试

目前车载FM&AM没有明确的国标,因此各家测试项目可能不同,最主要测试标准比较混乱,多是根据具体芯片的规格书以及与芯片厂商协商。信号发生器:R&S SMCV100B音频分析仪:R&S UPV AUDIO AYALYZER DC 250KHZ(AP的也可以)专用USB-I2C控制模块(不同芯片控制模块不同,例如SPI或UART的控制模块)卡农线(针对模拟声道输出,+接左/右声道,-接GND,地可接GND也可悬空)

qflook的博客 903

C++类和对象应用实例一链表

#include<iostream> using namespace std; class List; class Item{ public: friend class List; private: Item(int d=0){ data=d; next=0; } Item *next; int data; }; class List{ public : List(){ list = 0; } List(int d){

lyp 391

“双系统”出炉!瑞芯微RK3562J非对称AMP:Linux+RTOS/裸机

执行如下命令运行Linux应用程序rpmsg_echo,发送8个rpmsg数据包至运行Baremetal程序的Cortex-M0核心,当Cortex-M0核心每收到1个rpmsg数据包就会将数据包发送回Linux端。开发者可灵活分配任务或指定核心间通信,从而增强系统稳定性,减少崩溃风险,保障数据完整。下文以Cortex-A53(CPU0、CPU1、CPU2、CPU3)核心运行Linux系统与rpmsg_echo应用程序,Cortex-M0(MCU)核心运行Baremetal程序为例进行演示。

创龙,嵌入式一体化解决方案商 468

【原创教程】西门子1500与施耐德伺服的通讯以及调试

该函数块主要描述伺服的手动,左边的引脚Forward是指伺服手动正转,Backward是指伺服手动反转,Fast是指手动的某个方向为快速运行,TipPos手册上描述为固定值,WaitTIme是指伺服手动的相应时间,VeloSlow指伺服手动正常慢速运动的速度,VeloFast指伺服手动快速运动的速度,Acceleration是指伺服手动的加速度,Decelertion是指伺服手动的减速度。该函数块用于伺服停止,左边的引脚Execute为伺服停止执行,Deceleration含义为减速,Axis为轴。

Qinmingyue13的博客 1377

int fun1(linklist *L)实现统计成绩登记表

统计成绩登记表 数int funl(linkli 现要求完成函数 的定义,实现的人数功能。 中成绩优秀(成绩大于等于90分): //count score #include <iostream> #include <stdio.h> #include <string.h> #define num 4 using namespace std; typedef struct student { char *number;//Sno char *name;//stud

qq_47991812的博客 226

MATLAB 图像滤波:高通、低通、带通和方向滤波器

在 MATLAB 中,我们可以使用不同类型的滤波器对图像进行处理,包括高通滤波器、低通滤波器、带通滤波器和方向滤波器。通过以上代码示例,我们介绍了 MATLAB 中使用高通滤波器、低通滤波器、带通滤波器和方向滤波器对图像进行滤波的方法。高斯滤波器可以实现带通滤波效果,通过调整滤波器的方差参数可以控制带通滤波器的频率范围。这里的平均滤波器是一种常见的低通滤波器,通过对图像周围的像素进行平均来实现平滑效果。Sobel 滤波器是一种常用的方向滤波器,用于检测图像中的水平和垂直边缘。函数将高通滤波器应用于图像。

CyberSparkZ的博客 1396

c语言数据结构链表创建的四种方式

void main() { Node *head = NULL; //第一种通过返回值来接收创建好的链表 //Node * createLinkList(); head = createLinkList(); //第二种,传入指向结点的指针 //void createLinkList(Node *head); createLinkList(head); //第三种,传入指向结点指针的指针 //void createLinkList(Node **Phead); createLinkLi

刘璐菲 2135

一个超酷的开源uHand2.0机械手掌项目

uHand2.0是深圳乐幻索尔公司开源的一款机械手掌,它长下面这个样子:1、uHand2.0外观图之前在公众号就分享过视频:学习嵌入式可以带娃,不信你们看2、uHand2.0硬件原理图看...

Bruce.yang的嵌入式之旅 4461

14.建立时间、保持时间以及vivado时序report的参考使用

在设计数字系统时,需要仔细考虑电路元件的选择和布局以及时序设计来满足建立时间和保持时间的要求。建立时间,又称为建立时间窗口或建立期,是指数字信号在触发器的时钟信号前沿到来之前,必须已经稳定存在的时间。在本章节将结婚扫建立时间和保持时间的基本原理,以及如何通过vivado处理建立时间和保持时间。通过使用同步电路,可以更好地控制数据传输的时序并满足建立时间和保持时间的要求。例如,在D触发器中,选择具有适当充电和放电特性的D端口元件可以确保在时钟信号前沿到达前数据已经稳定存在,并在时钟信号前沿到达后保持稳定。

FPGA/MATLAB学习教程/源码/项目合作开发 2989

《C++语言基础》实践项目——链表类及其应用

返回:贺老师课程教学链接【项目 - 链表类】动态链表也是程序设计中的一种非常有用的数据结构。可以说,是否能够理解有关操作的原理,决定了你是否有资格称为“科班”出身。在后续的专业基础课中,相关的内容还会从不同的角度,反复地认识,反复地实践。不过,在现阶段多些体验,也是很有必要的了。(1)阅读下面的程序,回顾一下动态链表,阅读程序过程中,请用笔画一画形成链表的过程中指针值的变化。#include u

迂者-贺利坚的专栏 1726

基于STM32LXXX的模数转换芯片ADC(CMS24AD2001)驱动C程序设计

/ 电压 = (原始值 / 2^23) * Vref (注意:24位有符号数范围为 -2^23 到 2^23-1)//---------------- 硬件端口映射 (请根据实际电路修改) ----------------ADC_SCLK_HIGH();- PGA 放大倍数可选:1、2、4、8、16、32、64、128、256;//---------------- 宏定义操作 -------------------//---------------- 函数声明 -------------------

myron6688的博客 161

数据结构链表之单向链表:Python3 实现单向链表——1

Python3 实现单向链表 链表定义与简介 定义:链表与顺序表(Python中列表)性质相反,链表是物理单元上非顺序的、非连续的,在逻辑顺序上其数据元素是通过指针实现的,组成链表的每一个元素也可以叫做链表的节点,节点可以在运行时动态生成 单向链表中所有的元素也可以称之为节点,每个节点包含两个区域,如上图item区域称为数据域,next区域为指针域,单向链表中尾节点的判断只需判断该节点的指针(...

Moelimoe的博客 389

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

1.3 数据结构之 链表

编程总结 在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功 单链表中的每个结点不仅包含值,还包含链接到下一个结点的引用字段。通过这种方式,单链表将所有结点按顺序组织起来 1. 添加结点 2. 删除结点 3. 设计链表 ...

凡物加倍磨治,皆能变化气质 235

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数据结构 - 1 线性表 - 3 链表

数据结构线性表链表 单向链表 双向链表 循环链表 块状链表

Kin的博客 220

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python数据结构与算法3-链表1

d - 线性表 1)顺序表 2)链表: 不连续地储存数据,而是在每一个储存节点里存放下一个节点的位置。可以充分利用计算机的储存空间,实现动态的内存管理。 单向链表 每个节点包含信息域(元素域)和链接域(指针域),每个节点指向下一个节点,尾节点指向空值。 elem用来存放数据,next用来存放下一节点位置,p为头指针,指向头节点位置。 Python变量标示本质 python中,变量名并...

cmaster1219的博客 285

数据结构--1.3双向链表

数据结构-双向链表 今天学习的是双向链表,比起单链表来说应用会更加广泛,和单链表的算法在少数地方有些许差异。 老师的代码 创建一个双向链表 双向链表在结构体的定义上多增加了一个指向前一个的指针域。 typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode *previous; struct DoubleLinkedNode *next; }DLNode,*DLNodePtr; //创建 DLNodePtr initLin

m0_63944721的博客 642

java数据结构_LinkedList与链表_3.1

则有了如下代码块调试代码,发现的确在head.next 等于 null 停止循环此时要考虑一个问题,把所有的值打印完之后,是会将head置为null的,也就是说,我们找不到head的位置了,无法继续再对链表进行操作了,这是十分后悔的结果,如何解决呢?也不难,我们创建一个其他遍历,cur,把head的值赋给cur,然后用cur循环即可。就有了如下代码,这样,变脸完成之后,head依然是指向最开始的val = 12的位置。

Zz_waiting的博客 911

1.3数据结构学习-链表

1.2数据结构学习-队列链表单向链表单向链表DEMO双向链表双向链表DEMO 链表 1.描述:链表是一种链式存储有序列表 2.存储方式:链式存储,以节点方式存储,每个节点包含数据域及指向下一个节点的引用 3.内存分布:存储的每个节点在内存中并不连续 4.种类: 1).单向链表:节点中仅包含指向下一个节点的引用 2).双向链表:节点中包含指向下一个节点的引用及指向上一个节点的引用 单向链表 单向链表DEMO /** * @Auther: LiXuHui * @Date: 2019/7/17/017

qq_33586611的博客 167

1.3 python数据结构之链表——链表右移/链表分割/链表逆序

都是一些LeetCode上关于链表的题目,多刷一些这样的题目有助于我们全面熟悉链表那一套理论方法。 题目1.  61. Rotate List (将链表右移K个位置) Given a list, rotate the list to the right by k places, where k is non-negative. Example: Given 1-&gt;2-&gt;3-&gt;...

xutiantian1412的博客 1413

【数据结构3.1】单链表反转、反向打印链表等功能的java实现

1、有效节点的个数,不包含头节点 //查找有效节点数 public int getLength(){ SingleNode tempNode = headNode; int count = 0; while (tempNode.next != null){ count++; tempNode = tempNode.next; } return count; } 2

博客 236

25考研数据结构复习·2.3链表.1

struct LNode{ //结点;定义单链表结点类型//数据域;每个结点存放一个数据元素//指针域;指针指向下一个结点//增加一个新的结点:在内存中申请一个结点所需空间,并用指针p指向这个结点//优化typedef 关键字 —— 数据类型重命名typedef <数据类型><别名>typedef struct LNode{ //定义单链表结点类型//每个结点村南方一个数据元素//指针指向下一个结点struct LNode{ //定义单链表结点类型//每个结点存放一个数据元素。

Annabelle___的博客 902

C++数据结构(3.1):栈的链表实现详解

本文介绍了使用C++链表实现栈数据结构的方法。栈是一种后进先出(LIFO)的线性结构,支持压栈(push)和弹栈(pop)操作。通过链表节点(Node)存储数据,栈类(Stack)维护头指针和大小计数器,实现了O(1)时间复杂度的核心操作。相比数组实现,链表栈具有动态分配内存、无需预定义大小等优势,但需要额外指针空间。文章详细讲解了节点定义、类结构、核心功能实现(压栈/弹栈)、辅助功能(获取栈顶/大小)以及内存管理,并提供了完整的C++模板实现代码和测试用例。这种实现方式适用于元素数量变化大的场景。

2503_90937448的博客 1397

数据结构和算法——基于Java——3.1链表(单链表)

数据结构和算法——基于Java——3.1链表(单链表)

G_change_的博客 476

数据结构与算法Day3链表(1)

contents链表单向链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,在进行扩充时又需要进行数据的搬迁,使用起来不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。 表元素域

little_yueyue的博客 225
上一篇: 算法学习笔记(6)-希尔排序
下一篇: 算法学习笔记(7)-桶排序
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、付费专栏及课程。

余额充值