数据结构知识Day1

数据结构是什么?

数据结构是计算机存储、组织数据的方式,它涉及相互之间存在一种或多种特定关系的数据元素的集合。数据结构反映了数据的内部构成,即数据由哪些成分数据构成,以何种方式构成,以及呈现何种结构。这种结构特性有助于我们更有效地处理数据,提高算法的效率。

数据结构可以分为逻辑上的数据结构和物理上的数据结构。逻辑上的数据结构主要关注成分数据之间的逻辑关系,而物理上的数据结构则关注成分数据在计算机内部的存储安排。

在数据结构中,数据元素是数据的基本单位,在计算程序中通常作为一个整体考虑。一个数据元素可以由若干个数据项组成,数据项是数据结构中讨论的最小单位。此外,根据数据元素是否可再分,可以将数据元素分为原子项和组合项。

数据元素相互之间的关系称为结构。

总的来说,数据结构是计算机科学与技术领域中的一个重要概念,它有助于我们更好地理解和组织数据,从而提高数据处理和算法的效率。


数据>数据元素>数据项

数据元素:是数据的基本单位

数据对象:性质相同的数据元素的集合是数据的一个子集

数据项:组成数据元素的最小单位

数据结构主要包括以下方面:

  1. 数据的逻辑结构:这是指数据元素之间的逻辑关系,它反映了数据元素之间的前后件关系,而与它们在计算机中的存储位置无关。逻辑结构是数据结构的核心,它定义了数据元素之间的关联方式。
  2. 数据的物理结构(或称为存储结构):这是数据结构在计算机中的表示(又称映像),包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以一种数据结构可表示成一种或多种存储结构。
  3. 数据的运算:这也是数据结构的一个重要组成部分,它定义了针对数据元素和关系可以执行的操作。这些操作可以包括插入、删除、查找、修改等,具体取决于数据结构的类型和需求。

在更具体的层面上,数据结构还包括许多具体的结构类型,如数组、栈、队列、链表(单链表、双向链表、循环链表)、树(二叉树、堆等)、图等。每种数据结构都有其特定的应用场景和优势,选择合适的数据结构对于提高程序的效率和性能至关重要。

逻辑从线性和非线性分类:

一、线性结构

线性结构是指数据元素之间存在着一对一的线性关系。在这种结构中,除了第一个元素外,每个元素都有且仅有一个前驱;除了最后一个元素外,每个元素都有且仅有一个后继。线性结构中的数据元素是有序的,其操作通常包括在序列的任意位置进行插入、删除和查找等操作。典型的线性结构有数组、链表、栈和队列等。

数组是一种线性表数据结构,它用一组连续的内存空间来存储数据元素。链表则是由一系列节点组成,每个节点包含数据和指向下一个节点的指针。栈和队列是特殊的线性表,它们分别遵循后进先出(LIFO)和先进先出(FIFO)的原则。

二、非线性结构

非线性结构是指数据元素之间存在多个对应关系,即一个元素可能有多个前驱和后继。这种结构中的数据元素不是简单地按照线性顺序排列,而是形成了更复杂的关联关系。典型的非线性结构有树形结构和图状结构。

树形结构是一个或多个节点的有限集合,其中一个特定的节点被称为根节点。树形结构具有层次性,每个节点可以有多个子节点,但只有一个父节点(除了根节点没有父节点)。常见的树形结构有二叉树、多叉树等。

图状结构中的节点之间的连接关系更加复杂,任意两个节点之间都可能存在一条路径。图状结构中的数据元素通过边或弧进行连接,形成网状结构。图状结构在表示复杂关系时非常有用,如社交网络、地图、电路图等。

存储结构分为四种:

顺序结构、链式结构、索引结构、散列结构

顺序结构:顺序存储结构在计算机中通常是用一组地址连续的存储单元来依次存储线性表的各个数据元素。

这可以通过使用高级语言中的数组来实现,数组的每个元素对应线性表中的一个数据元素。

这种结构的优点在于其存储空间利用概率高,因为分配给数据的存储单元主要用于存放结点的数据,结点之间的逻辑关系并没有占用额外的存储空间。同时,顺序存储结构也支持对结点的随机存取,即可以通过计算直接得到结点的存储地址。

写的时候顺序什么样,存的时候就是什么样。

链式存储:用任意的存储单元来存储,数据元素之间的关系用指针来表示。

索引存储:在存储结点的同时还建立了一个索引表。

散列存储:根据关键字查找计算

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

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

相关文章

LeetCode讲解算法1-排序算法(Python版)

文章目录 一、引言问题提出 二、排序算法1.选择排序(Selection Sort)2.冒泡排序3.插入排序(Insertion Sort)4.希尔排序(Shell Sort)5.归并排序(Merge Sort)6.快速排序(Qu…

【Node.js从基础到高级运用】十三、NodeJS中间件高级应用

在现代web开发中,Node.js因其高效和灵活性而备受青睐。其中,中间件的概念是构建高效Node.js应用的关键。在这篇博客文章中,我们将深入探讨Node.js中间件的高级应用,包括创建自定义中间件、使用第三方中间件等。我们将从基础讲起&a…

AJAX-原理XMLHttpRequest

定义 使用 查询参数 定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据 语法:http://xxxx.com/xxx/xxx?参数名1值1&参数名2值2

ChatGPT编程Python小案例(拿来就用)—解压zip压缩文件

ChatGPT编程Python小案例(拿来就用)—解压zip压缩文件 今天撸一本书,其中书中提供一个zip压缩文件的资料。下载之后,没有解压软件,(也可能该文件可以自解压)。这段时间已经深刻体会到AI编程带来…

爬虫 Day2

resp.close()#关掉resp 一requests入门 (一) 用到的网页:豆瓣电影分类排行榜 - 喜剧片 import requestsurl "https://movie.douban.com/j/chart/top_list" #参数太长,重新封装参数 param {"type": "…

【Unity每日一记】unity中的内置宏和条件编译(Unity内置脚本符号)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

EDI在汽车主机厂配送流程中的应用

汽车主机厂的汽车配送流程始于汽车 “生产结束 ” ,止于 “交付给经销商 ” 。在这个流程中,企业作为主机厂的下游供应商,与主机厂的物流服务供应商之间的信息交换将会变得十分重要。 配送流程:运输订单以及报告 汽车主机厂提供预…

【linux驱动】定时器的使用

【linux驱动】定时器的使用 文章目录 【linux驱动】定时器的使用1.介绍1.1相关名词1.2配置HZ的方法 2.API3.示例4.调试 1.介绍 1.1相关名词 HZ、jiffies、tick Linux系统启动后,每隔固定周期就会发出timer interrupt(IRQ 0),HZ用来定义每一秒发生多少…

【机器学习】经典目标检测算法:RCNN、Fast RCNN、 Faster RCNN 基本思想和网络结构介绍

文章目录 三者的比较:RCNN、Fast RCNN、 Faster RCNN一、框架的对比1.三者都是二阶算法,网络框架比较:2.三者的优缺点比较: RCNN一、RCNN系列简介二、RCNN算法流程的4个步骤三、RCNN存在的问题四、论文解析补充1.R-CNN提出了两个问…

Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类

文/Odoo亚太金牌服务开源智造 老杨 在Odoo最新V17新版中,其突出功能之一是能够构建个性化视图,允许用户以独特的方式与数据互动。本文深入探讨了如何使用 JavaScript 类来呈现表单视图来创建自定义视图。通过学习本教程,你将获得关于开发Odo…

放慢音频速度的三个方法 享受慢音乐

如何让音频慢速播放?我们都知道,在观看视频时,我们可以选择快进播放,但是很少有软件支持慢速播放。然而,将音频慢速播放在某些情况下是非常必要的。例如,当我们学习一门新语言时,我们可以将音频…

Pytorch详细应用基础(全)

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.安装pytorch以及anaconda配置 尽量保持默认的通道,每次写指令把镜像地址写上就行。 defaults优先级是最低的&#…

深度学习神经网络相关记录《二》

如何判断模型是一个好模型? 模型预测效果,也就是模型预测的准确率运算速度;能够处理大量数据、短时间内急速学习、可以实时进行预测,是机器学习的重要优势;可解释性;深度学习已经不太关系这一点了&#xf…

基础:TCP三次握手做了什么,为什么要握手?

1. TCP 三次握手在做些什么 1. 第一次握手 : 1)握手作用:客户端发出建立连接请求。 2)数据处理:客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_S…

基于Matlab的视频人面检测识别,Matalb实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

分布式(计算机算法)

目录 分布式计算 分布式​编辑 分布式和集群 分布式和集群的应用场景 分布式应用场景 集群应用场景 哪种技术更优、更快、更好呢 性能 稳定性 以下概念来源于百度百科 分布式计算 分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息…

【uniapp】uniapp设置改变全局字体大小功能:

文章目录 一、效果:二、文档:三、案例:引用插件,将项目中的字体单位rpx换成rem,结合官网提供的page-meta属性,通过控制根字体大小,达到调节字体大小要求。 一、效果: 二、文档&#…

代码随想录算法训练营第46天 | 完全背包,139.单词拆分

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 完全背包理论基础: https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9…

全网最全的幻兽帕鲁服务器搭建教程——阿里云保姆级教程

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

DVWA靶场-SQL InjectionSQL注入

SQL Injection(SQL注入)概念 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注…