【数据结构】静态链表/2021年11月13日

【考研数据结构题型分类讲解练习】1-1线性表--选择题--习题篇 题型一:选择合理的存储结构 1. 线性表的顺序存储结构是一种()【北京理工大学2006五、3 (1分)】答案讲解直达 A.随机存取的存储结构 B.顺序存取的存储结构 C.索引存取的存储结构 D. Hash存取的存储结构 2.能在0(1)时间内访问线性表的第i个元素的结构是( ) 。【电子科技大学2011一、2(2分)】 A.顺序表 B.单链表 C.单向循环链表 D.双向链表 3.·若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。【哈尔滨工业大学 阅读详情

今天是努力学习数据结构的第二天。

首先,静态链表不同于普通链表,它本质上是一个固定长度的数组,每个元素包含其数据(data)和游标(cur),游标(cur)指向其下一个元素(后继),并且静态链表的第一个元素用于存放待添加元素,其游标指向备用链表的下标。静态链表的最后一个元素不存放数据,其游标指向静态链表的第一个元素。请添加图片描述
实现代码:

#define MAXSIZE 1000
typedef int ElemType;
typedef int Status;

这是静态链表的基本结构
每个结构包含一个data和一个cur

typedef struct
{
	ElemType data;
	int cur;
 } Component,StaticLinkList[MAXSIZE]; 

建立静态链表
采用一个循环,一个接一个(前一个的游标按顺序指向下一个的下标)

 Status InitList(StaticLinkList space)
 {
 	int i;
 	for(i=0;i<MAXSIZE-1;i++)
 	    space[i].cur=i+1;
 	space[MAXSIZE-1].cur=0;
 	return OK;
 }

分配空间
由于这是静态链表,所以我们需要手动实现静态链表的新元素的分配。
首先拿到第一备用元素space[0]的游标,也就是第一个空闲元素的下标,然后安排一个新的备用元素给space[0]。

int Malloc_SLL(StaticLinkList space)     //apply for a space
 {
    int i=space[0].cur;
    if(space[0].cur)
		  space[0].cur=space[i].cur;
	return i;
        
 }

插入新元素
k用于寻找要插入位置的前一个元素,j是要插入的元素,l是后一个元素。
先给j申请空间,然后把数据放里面(data)
用循环找到插入位置的前一个元素
新元素接他的后一个元素
新元素接他的前一个元素

 Status ListInsert(StaticLinkLIst L,int i,ElemType e)
 {
 	int j,k,l;
 	k=MAXSIZE-1;
 	if(i<1||i>ListLength(L)+1)
 	    return ERROR;
    j=Malloc_SLL(L);
    if(j)
    {
    	L[j].data=e;
    	for(l=1;l<i-1;l++)
    	    k=L[k].cur;
    	L[j].cur=L[k].cur;
    	L[k].cur=j;
    	return OK;
	}
	return ERROR;
 }

元素删除
删除第i个元素
先用循环找到待删除元素的前一个的位置
前一个元素接上待删除元素的后一个元素
释放待删除元素的空间
(释放的函数需要手动实现)

Status ListDelete(StaticLinkList L, int i)
 {
 	int j,k;
 	if(i<1||i>ListLength(L))
 	    return ERROR;
 	k=MAXSIZE-1;
 	for(j=1;j<=i-1;j++)
 	    j=L[k].cur;
 	j=L[k].cur;
 	L[k].cur=L[j].cur;
 	Free_SSL(L,j);
 	return OK;
 }

释放一个元素的空间
把首个备用元素的游标赋值给待释放元素的游标。
首个备用元素游标指向待释放元素的位置
这样我们下次使用链表时就会优先使用这个以及释放的元素的位置,然后再用之前的首个备用位置

void Free_SSL(StaticLinkList space,int k)
 {
 	sapce[k].cur=space[0].cur;
 	space[0].cur=k;
 }
 



分割线·············································



第二天了,今天因为体测耽误了补习班和实训…
只要在学校,各种事总是会干涉我的计划
最后,一句名言激励一下自己

个人的发展也要同时代的进程相联系。
The improvement of an individual must be associated with the process of history.

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能 随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。 阅读详情

相关推荐

Win10/Win11系统下,用VSCode编译Betaflight固件最全避坑指南(从GCC安装到HEX生成)

本文详细介绍了在Win10/Win11系统下使用VSCode编译Betaflight固件的完整流程,包括GCC安装、环境变量配置、终端选择、Make工具安装等关键步骤,帮助开发者避开常见陷阱,高效生成HEX文件。特别针对VSCode环境优化和编译错误排查提供了实用解决方案。

weixin_42557803的博客 415

数据结构——静态链表

静态链表( static linked list ), 就是用数组来表示链表,用数组元素的下标来模拟链表的指针. 由于是利用数组来定义的链表,属于静态储存分配, 因而叫做静态链表. 静态链表的节点也有由两个域组成: 数据域和游标.因此,静态链表中节点的构成用 C 语言实现为: 跟普通链表的区别就是 next 是数组下标是int 类型. 用来记录空间存储空间的位置,以便后期分配给新添加元素使用。 整体代码 运行结果 使用静态链表存储数据,需要预先申请足够

weixin_75078464的博客 1633

手把手教你用SAM模型实现精准图像分割:从环境配置到实战应用

本文详细介绍了如何使用Meta推出的Segment Anything Model(SAM)实现精准图像分割,从环境配置到实战应用的全流程。特别针对电商场景中的商品分割需求,提供了硬件配置、模型下载、API使用及优化策略等实用指南,帮助开发者快速掌握这一强大的深度学习工具。

pepsi的博客 1062

数据结构线性表--静态链表

静态链表1.静态链表产生的原因?2.静态链表4.备用链表3.创建静态链表4.添加数据5.删除操作6.查询数据 1.静态链表产生的原因? 因为顺序存储结构和链式存储结构两者都有各自的优点,如下表所示。 性能 具体功能 顺序存储 链式存储 空间性能 存储分配 一次性分配 动态分配(优) 空间性能 存储密度(下面会有解释) =1(优) <1 时间性能 查找 O(n/2) O(n/2) 时间性能 读运算 O(1)(优) O((n+1)/2)最好情况为1,最坏情况为n 时间性能

qq_45137584的博客 897

Unity游戏开发:从零开始适配Nintendo Switch的完整指南

本文详细介绍了如何使用Unity进行Nintendo Switch游戏开发的完整流程,包括开发环境搭建、Unity工程适配、手柄与硬件特性开发、存储与性能优化等关键步骤。特别强调了Switch SDK的配置、输入系统改造和内存优化技巧,帮助开发者高效完成跨平台适配。

vodka的博客 1069

别再死记硬背了!用TwinCAT 3手把手教你配置EtherCAT伺服驱动的PDO映射(DS402协议)

本文详细介绍了如何使用TwinCAT 3配置EtherCAT伺服驱动的PDO映射(DS402协议),涵盖环境准备、设备扫描、PDO映射实战及高级技巧。通过具体操作步骤和常见问题排查,帮助工程师快速掌握EtherCAT通信配置,提升运动控制系统的效率和稳定性。

weixin_29185493的博客 322

【数据结构】静态链表

数据结构之静态链表实现 前言 静态链表: 每个节点有一个数据域(data),用来存放有用的数据信息; 还有一个下标域(cur),用来指示下一个元素的下标位置。

SCOTT 技术博客 3762

基于ESP32-S3与PCM5102的HiFi网络收音机复刻指南:从硬件设计到软件配置

本文提供了一份详细的基于ESP32-S3与PCM5102的HiFi网络收音机复刻指南。内容涵盖从核心硬件选型(如ESP32-S3主控与PCM5102 DAC芯片)、四路独立LDO供电设计,到软件环境配置、固件烧录及常见问题调试的全过程,旨在帮助创客打造一台支持网络电台、本地播放与蓝牙连接的高保真音频播放器。

weixin_30632267的博客 186

静态链表(数据结构)

静态链表: 结构体变量中包含数据域和游标域 typedef struct Node { ELEM_TYPE mdata;//数据域 int cursor;//游标 }SNode; 静态链表: 1.数组的下标为0的元素的游标域存放的是未使用链表的第一个节点的下标。 2.数组的最后一个元素(SLIST_SIZE-1)存放的是第一个有数据值得元素的下标。 3.最后一个元素相当于单链表的头结点。 ...

qq_42111463的博客 450

基于STM32L4XX 、HAL库的TMC2209-LA-T步进电机驱动器驱动程序应用设计

/ R/W=0 表示写。uint32_t gconf_value = (0 << 0) // I_scale_analog: 禁用,使用UART控制电流。uint32_t ihold_irun = (8 << 0) // 保持电流 8/31 最大值。

PP_Cottage的博客 450

VTK-9.5.0 1D2D3DWidget实现灰度图+深度图+3D点云显示(可轻松集成到自己的项目)

VTK1D2D3DWidget是一个基于Qt和VTK开发的3D点云可视化工具,支持RGB和深度点云数据的显示与处理。主要功能包括点云加载、可视化、保存为PLY格式文件,以及背景颜色、点间隔、坐标轴显示等参数的自定义设置。该工具采用模块化设计,核心组件包括主窗口管理类、VTK渲染组件和自定义鼠标交互样式,依赖Qt5+和VTK9.5.0库实现跨平台支持。项目提供完整的源码和构建指南,适用于点云数据的快速展示与分析。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 385

数据结构:静态链表

1、对于没有指针的编程语言,可以用数组替代指针,来描述链表。让数组的每个元素由data和cur两部分组成,其中cur相当于链表的next指针,这种用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。我们对数组的第一个和最后一个元素做特殊处理,不存数据。让数组的第一个元素cur存放第一个备用元素(未被占用的元素)下标,而数组的最后一个元素cur存放第一个有值的元素下标,相当于头结点作用。 ...

yy_0733的博客 358

环形平滑标签(Circular Smooth Label, CSL)技术详解

环形平滑标签(CSL)是一种优化算法,旨在解决旋转目标检测中角度预测的边界问题。通过将角度回归转化为分类任务,并利用窗口函数平滑标签分布,CSL有效处理了角度周期性的梯度突变问题。其核心原理包括角度离散化和平滑标签编码,通过高斯、矩形、三角等窗口函数生成概率分布。CSL在技术实现上涉及标签转换流程、模型结构调整和损失函数优化,显著提升了检测精度和稳定性。在DOTA数据集上的实验表明,CSL在mAP和角度误差方面优于传统方法。应用场景包括遥感图像分析、自动驾驶和工业质检,部署时需注意旋转NMS编译和ONNX导

浩瀚之水的专栏 640

数据结构(二) 线性表

想要上岸;一定上岸,孟宴臣;上岸

宝藏Coder的空间 385

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Statistics and Machine Learning Toolbox

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

数据结构之静态链表

静态链表 文章目录:

qq_43607916的博客 314

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数据结构学习笔记-静态链表(C语言实现)

       静态链表主要是为一些没有指针的高级开发语言而提供的。实现思路就是:创建一个数组,数组中的元素由两个属性组成,数据(data)、指针(cur)。指针指向下一个数组元素的下标。数组的第一个元素和最后一个元素不存放数据。数组之内除第一个数组元素,其余的数组空元素都被称为备用链表。数组的第一个元素的cur存放第一个备用链表的下标,数组的最后一个元素的cur存放第一个带有数据的数组元素的下标。...

Daydream Mr.的博客 485

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数据结构静态链表

为了和指针型的线性链表相区别,由数组描述的链表叫静态链表 数组的一个分量表示一个结点,同时用游标(cur)代替指针指示结点的位置。这种存储结构仍需要分配较大空间,但在作线性表的插入和删除操作时不需要移动元素,仅需要修改案指针。 静态链表是用结构体数组实现的,首先要在内存中开辟一段连续空间作为数组空间 然后建立备用链表,取备用链表头结点指向的节点作为数据链表的头结点 备用链表的头结点不要删除,用它来...

DT_zhan的博客 1440

【数据结构】基于比较的排序算法 - 交换排序

本文介绍交换排序中的冒泡排序与快速排序。冒泡排序通过相邻元素比较交换,实现升序,时间复杂度最坏为O(N²),空间复杂度O(1),稳定且适合小规模有序数据。快速排序采用分治思想,以基准值划分区间,平均时间复杂度O(N log N),空间复杂度O(log N),但不稳定,实际应用中性能优异,可通过随机基准、小区间优化等提升效率。

careathers的博客 359

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

weixin_44218929的博客 198

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 690

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 295

数据结构的基本概念和算法的初步认识

本文系统阐述数据结构与算法的基础概念,涵盖数据、数据元素、数据对象的层次关系,数据结构的三要素(逻辑结构、存储结构、数据运算),以及抽象数据类型。重点解析算法的特性与设计要求,并深入讲解时间复杂度分析的核心——大O表示法,通过“只保留最高阶项、忽略常数系数、取最坏情况”三大原则,结合实例剖析O(1)、O(n)等常见时间复杂度,揭示算法效率的本质评估方法。

ACH_YYX的博客 192

【数据结构】堆(Heap):堆的实现、建堆与堆排序

堆是一种特殊的完全二叉树,分为大堆(父节点≥孩子)和小堆(父节点≤孩子),可快速获取最值。堆通常用数组存储,通过下标计算父子关系。核心操作为向上调整(插入时)和向下调整(删除或建堆时),时间复杂度均为O(log N)。建堆可采用从后往前的向下调整法,整体复杂度为O(N)。基于堆的堆排序通过反复提取最大值实现升序排列,总时间复杂度为O(N log N),空间复杂度O(1),是高效稳定的排序算法。

2501_93577780的博客 350

Redis 数据结构、单线程架构与 String 字符串详解

Redis采用单线程架构,通过事件循环(Event Loop)高效处理I/O事件,避免阻塞。其核心优势在于内存操作快、无上下文切换开销。数据结构支持多种内部编码(如ziplist、quicklist),自动根据场景优化存储与性能。字符串类型是基础且灵活,可存文本、数字或二进制数据,最大512MB,支持原子操作。命令如SET、GET、MGET、MSET等实现高效读写,适用于缓存、计数、会话管理等场景。

2303_77004089的博客 356

笔记-论数据结构3(算法分析-时间复杂度)

i <= n;s = 0;次数1234ti1248?i2^02^12^22^32^t-1在遍历的过程中,2^t-1次方的增长率肯定大于n,可得出结论2^t-1 > n那么,为了得出t和n的关系,我们可以运用对数关系:log2为底2^t-1 > log2为底n消掉log2为底2t-1 > log2为底nt > log2为底n+1于是可以得出。

fish_zzzz的博客 234

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 345
上一篇: 数据结构学习【1.单链表】2021-11-12
下一篇: 【数据结构】栈(上)2021-11-14
Sweler*19
博客等级 码龄7年 65粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值