1.C_数据结构_基本知识

news2025/1/11 12:42:06

相关名词

数据是什么:

数据即信息的载体,是能够输入到计算机中并且能够计算机识别、存储、处理的符号总称。这里的数据不一定是一个int型,也可能是一个语音、一个字符串或者其他的一些打包的内容。

数据元素是什么:

  • 数据元素(记录)是数据的基本单位。
  • 数据元素由若干个基本项组成,这个基本项被称为字段、域、属性。
  • 数据结构是研究数据元素之间的关系,

例如在数据库中有如下一条数据。

对于整个一行的数据,我们称为这是一个数据元素。在代码中,数据元素以结构体形式存在。

产品编号、名称、规格、出厂日期是字段。在代码中,这是结构体中的成员。

数据结构框图:

什么是随机存取和按地址存取:

  • 随机存取:允许通过索引来访问元素(如:a[i]),而不需要顺序地遍历数据结构。 
  • 按地址存取:直接通过内存地址来访问数据元素的方式

逻辑结构

研究逻辑结构,就是研究数据元素的前驱和后继。前驱就是前面是谁,后继就是后面是谁。

1、集合

数据元素间除了同属于一个集合外,没有其他关系。编程中不考虑这种逻辑。

示意图如下:

2、线性结构

一对一关系。编程中有线性表、栈、队列。

示意图如下:

3、树形结构

一对多关系。

示意图如下:

4、图状结构

多对多关系。

示意图如下:

存储结构

存储结构研究的是如何把逻辑结构在计算机中进行存储。

1、顺序存储

将数据结构中的各元素按照其逻辑顺序存放于存储器一片连续的存储空间中。一般用数组表示。

示意图如下:

顺序存储时,得知了任意一个数据元素的地址,就可以直接计算出其他元素的地址。

顺序存储的优点:

  • 逻辑上相邻的元素ai、ai+1,其存储位置也相邻
  • 对数据元素ai的存取为随机存取或按地址存取
  • 存储密度高,即:空间利用率高。存储密度D = 数据元素所占总空间 / 数据结构所占总空间

顺序存储的缺点:

  • 插入、删除的运算实现复杂。因为删除一个数据元素,之后的数据元素都需要移动位置。

适用情况:

  • 查找的情况比较多,插入、删除的情况比较少

2、链式存储

将数据结构中的各元素存放在存储器的不同地方,每一个存储块称为一个结点,用指针方式建立它们的链接。

示意图如下:

适用情况:

  • 查找的情况比较少,插入、删除的情况比较多

3、索引存储

在存储数据的同时、建立一个附加的索引表,即:索引存储结构 = 数据文件 + 索引表

示意图如下:

在上图中,通过索引表快速找到丁的起始位置,之后从起始位置开始,在数据文件中找到所需丁xx的地址,这样就提高了索引效率。

4、散列存储

根据数据元素中的特殊字段(key),计算出数据元素的存放地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Danbooru风格图片分享平台szurubooru

什么是 Danbooru ? Danbooru 是一种流行的图片分享网站,以其独特的图片标签系统和搜索功能而闻名。"Danbooru风格"通常指的是模仿 Danbooru 网站的图片论坛或图片分享平台所具有的特定特征,如: 标签系统:用户…

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II 1.题目 1.1复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCod…

2024年高教杯国赛(B题)数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

【2024高教社杯国赛A题】数学建模国赛建模过程+完整代码论文全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路! 作为经验丰富的数学建模团队,我们将为你带来2024国赛数学建模竞赛(A题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析…

WebAPI(二)、DOM事件监听、事件对象event、事件流、事件委托、页面加载与滚动事件、页面尺寸事件

文章目录 一、 DOM事件1. 事件监听2. 事件类型(1)、鼠标事件(2)、焦点事件(3)、键盘事件(4)、文本事件 3. 事件对象(1)、获取事件对象(2)、事件对象常用属性 4. 环境对象 this5. 回调函数 二、 DOM事件进阶1. 事件流(1)、 捕获阶段(2)、 冒泡阶段(3)、 阻止冒泡(4) 、阻止元素默…

Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著

Optuna这个备受欢迎的超参数优化框架在近期发布了其第四个主要版本。自2018年首次亮相以来,Optuna不断发展,现已成为机器学习领域的重要工具。其用户社区持续壮大,目前已达到以下里程碑: 10,000 GitHub星标每月300万 下载量16,00…

静心是良性循环

我发现一个挺有意思的事: 花时间修炼自己的心,让自己静心,就愿意多花时间修炼,会更加静心,这样就良性循环了。难的是刚开始,心不静,没时间修炼,心静不下来,更没时间修炼&…

分类中的语义一致性约束:助力模型优化

前言 这里介绍一篇笔者在去年ACL上发表的一篇文章,使用了空间语义约束来提高多模态分类的效果,类似的思路笔者也在视频描述等方向进行了尝试,也都取得了不错的效果。这种建模时对特征进行有意义的划分和约束对模型还是很有帮助的,…

基于人工智能的文本摘要生成系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 文本摘要生成是自然语言处理(NLP)中的一个重要任务,它旨在从长文本中提取出核心内容,生…

【学习笔记】SSL证书安全机制之证书验证

前言:每当Client从Server收到一张证书,有2件事Client需要去验证: 证书是否有效? 证书只是文件中的文本Client如何知道内容能够信任?Server是否是证书真正的拥有者? 证书可以公开获取Client如何知道Server是…

OM5光纤:优化您的数据中心性能

随着数据中心需求的持续增长,传统OM3和OM4光纤在传输距离和带宽方面的局限性日益显现。为应对这些挑战,OM5光纤应运而生。OM5光纤又称为宽带多模光纤(WBMMF),通过支持单根光纤上的多波长传输,显著提高了数据…

ubuntu linux搭建lvgl v9

记录一下ubuntu linux搭建 lvgl的过程 本地环境:ubuntu 16.04 ubuntu lvgl sdl2 1 获取源码 git clone https://github.com/lvgl/lv_port_linux.git cd lv_port_linux/ git submodule update --init --recursive查看分支: git branch -a 我选择的是9.2(master分支一直在变动…

无人机执照拿到后怎么就业?方向有哪些?就业率如何?

无人机执照拿到后,就业方向广泛且多样,就业率也呈现出逐年上升的趋势。这主要得益于无人机技术的广泛应用和无人机市场的不断扩大。以下是对无人机执照持有者就业情况的详细分析: 就业方向 1. 无人机飞行操作: 无人机飞手可以从…

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半…

经典文献阅读之--Representing 3D sparse map points....(用于相机重定位的3D点线稀疏地图)

0.简介 最近在视觉定位和地图制图方面取得了显著的进展,成功地将点特征和线特征进行了整合。然而,将定位框架扩展到包括额外的地图组件往往会导致对匹配任务的内存和计算资源需求增加。《Representing 3D sparse map points and lines for camera reloc…

尝试用java spring boot+VUE3实现前后端分离部署(8/31)

前言 这几天开学了,公司这边几个和学校对接的项目都挺忙的,然后我又开始有点闲的情况了。问大佬能不能继续看看若依的项目,大佬让我自己去学了。在看若依的项目的时候在想,python的FLASK后端实现和JAVA spring boot的实现差别大不…

通过指令微调提升语言模型性能

人工智能咨询培训老师叶梓 转载标明出处 如何让机器更好地理解和执行人类的指令一直是一个重要课题。Google的研究团队中提出了一种新的方法,通过指令微调(instruction finetuning)来提升语言模型的性能和泛化能力。 他们主要研究了如何通过…

美食|基于SpringBoot+vue的美食网站(源码+数据库+文档)

美食网站 基于SSMvue的美食网站 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 用户模块实现 餐厅模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

JavaScript拷贝的艺术:玩转深拷贝和浅拷贝

前言 在实际的项目开发中,我们时刻都在使用数据拷贝功能,赋值、深拷贝和浅拷贝是前端开发中常见的概念,用于复制简单数据类型(字符串、数值、布尔值)和引用类型(对象、数组)。它们的主要区别在…

第十六篇:走入计算机网络的传输层--传输层概述

1. 传输层的功能 ① 分割与重组数据 一次数据传输有大小限制,传输层需要做数据分割,所以在数据送达后必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机,无法判断数据报文应该交给哪个应用,传输层给每个应用都设…