初学学习408之数据结构--数据结构基本概念

news2025/1/12 6:10:06

初学学习408之数据结构
我们先来了解一下数据结构的基本概念。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

本内容来源于参考书籍《大话数据结构》与《王道数据结构》。
除去书籍中的内容,作为初学者的我会尽力详细直白地介绍数据结构的内容,希望能为与我相同水平的小白做一份参考。
关于数据结构的起源,我就不多赘述了,感兴趣的话可以随意在线上找一本电子书进行了解。

一、数据结构的基本概念

数据 : 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。

对于整型、实型等数值类型,可以进行数值计算;对于字符数据类型就需要进行非数值的处理;而声音、图像、视频等其实是可以通过编码的手段变成字符数据来处理的。
我们所说的数据就是符号,而且这些符号必须具备两个前提:

  • 可以输入到计算机中
  • 能被计算机程序处理

数据元素 :是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。

反过来,我们也可以了解到将整体事物看作为数据对象,比如人、鸡、鸭、鹅等。

数据项 : 一个数据元素可以有若干个数据项组成,数据项是数据不可分割的最小单位。

image.png
image.png
我们还需要了解一点,在本门课程中,将数据项定义为最小单位是为了更好地解决问题。
但在讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。我们围绕着这个主体去研究,而不是对这个主体中的某一成分去研究。

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

那么性质相同是如何定义的呢?
是指数据元素具有相同数量和类型的数据项。就好比上列的举例,通讯录中组成成分,每一个人都拥有姓名、年龄、性别、电话号码、家庭住址等;再或者每个学生都有自己的姓名、学号、班级、成绩等信息。
数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们都将数据对象简称为数据。
再回看数据的定义,数据是有多个数据元素组成的集合,而数据元素是由若干个数据项组成的。
image.png
本图只是辅助同学们理解它们之间的包含关系。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

结构的理解就是关系,即不同的数据元素在数据中是如何联系起来的?
不同数据元素之间不是独立的,而是存在特定的关系,我们就将这些关系成为结构。
image.png

二、逻辑结构

逻辑结构 : 是指数据对象中数据元素之间的相互关系。

image.png
image.png

三、物理结构

物理结构 : 是指数据的逻辑结构在计算机中的存储形式。

image.png
数据的存储结构应正确反映数据元素之间的逻辑关系,这才是最为关键的,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
image.png
数据元素的存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。
逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目标就是将数据及其逻辑关系存储到计算机的内存中。

四、数据类型

数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

数据类型是按照值的不同进行划分的。
在高级语言中,每个变量、常量和表达式都有各自的取值范围。
类型就用来说明变量或表达式的取值范围和所能进行的操作。

我们可以理解为为了更好利用我们所有的空间和达到我们需求,我们设计了各不同功能的房间和房型。
在计算机中,就是我们需要合理地利用内存,毕竟内存不是无限大的。于是对我们所操作的数据进行分类,分出多种数据类型。
image.png

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

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

相关文章

【Prometheus】概念和工作原理介绍

目录 一、概述 1.1 prometheus简介 1.2 prometheus特点 1.3 prometheus架构图 1.4 prometheus组件介绍 1、Prometheus Server 2、Client Library 3、pushgateway 4、Exporters 5、Service Discovery 6、Alertmanager 7、grafana 1.5 Prometheus 数据流向 1.6 Pro…

liunx前后端分离项目部署

文章目录 1、nginx的安装和自启动2.nginx负载均衡3.前后端项目部署-后端部署4.前后端项目部署-前端部署 1、nginx的安装和自启动 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel1.安装我们nginx所需要的依赖 wget http://nginx.org/download/nginx-1.…

S32 Design Studio PE工具配置TMR

配置步骤 配置内容 生成的配置结构体如下,在Generated_Code路径下的lpTmr.c文件和lpTmr.h文件。 /*! lpTmr1 configuration structure */ const lptmr_config_t lpTmr1_config0 {.workMode LPTMR_WORKMODE_PULSECOUNTER,.dmaRequest false,.interruptEnable tr…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

npm i卡在 idealTree buildDeps没反应的解决方案

通过git clone拉下项目后,进行项目的初始化下包时,发现npm i 并没有反应(如图): 关键点:IdealTree 1.网络问题 确保你的网络连接正常,能够正常访问 npm 仓库。有时网络问题可能导致包无法正确…

GitHub下载器,老司机懂的都懂!

有些老司机或者做项目的小伙伴对GitHub应该不陌生吧,然而GitHub的下载速度非常让人不忍直视! 而GitHub高速下载器是一款专门用于加速在GitHub上下载资源的软件,解决了许多用户在下载GitHub资源时遭遇的速度慢和下载失败的问题。 本教程将详细…

代码随想录算法训练营第62天 | 739.每日温度 496.下一个更大元素I

每日温度 如果我们单纯的遍历数组,我们不知道当前元素是否比之前的元素大,所以需要维护一个容器来记录遍历过的元素。 什么时候用单调栈?通常是一维数组,要寻找任一个元素的右边或左边第一个比自己大或小的元素的位置。时间复杂度…

Connection管理类实现(模块六)

目录 类功能 类定义 类实现 编译 本文使用了自定的Any类 Any类的简单实现-CSDN博客 类功能 类定义 // DISCONECTED -- 连接关闭状态 CONNECTING -- 连接建立成功-待处理状态 // CONNECTED -- 连接建立完成,各种设置已完成,可以通信状态 DISCONNECTING -- 待关闭状态 t…

每日五道java面试题之spring篇(六)

目录: 第一题 ApplicationContext通常的实现是什么?第二题 什么是Spring的依赖注入?第三题 依赖注入的基本原则第四题 依赖注入有什么优势?第五题 有哪些不同类型的依赖注入实现方式? 第一题 ApplicationContext通常的…

基于频率增强的数据增广的视觉语言导航方法(VLN论文阅读)

基于频率增强的数据增广的视觉语言导航方法(VLN论文阅读) 摘要 视觉和语言导航(VLN)是一项具有挑战性的任务,它需要代理基于自然语言指令在复杂的环境中导航。 在视觉语言导航任务中,之前的研究主要是在空间…

pycharm如何设置滚轮缩放代码大小?

左上角的File找到设置,或者快捷键ctrlalts。 弹出对话框,手动输入mouse,点击general,勾选改变字体大小,ok确认

转前端了!!

大家好,我是冰河~~ 没错,为了更好的设计和开发分布式IM即时通讯系统,也为了让大家能够直观的体验到分布式IM即时通讯系统的功能,冰河开始转战前端了。也就是说,整个项目从需求立项到产品设计,从架构设计到…

ubuntu20.04中配置Pyrep和CoppeliaSim

ubuntu20.04中配置Pyrep和CoppeliaSim 在Ubuntu20.04中配置 Pyrep ,实现应用Python语言的机器人在 Vrep(CoppeliaSim)中的虚拟仿真 一、安装CoppeliaSim 4.1 1.1 下载适配Ubuntu20.04的CoppeliaSim 4.1软件 下载链接:https://…

【前端素材】推荐优质后台管理系统Dashy平台模板(附源码)

一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

Nginx实现平滑升级

平滑升级 本篇目标:将现有的 nginx 1.22.0 版本升级为 1.24.0 //查看现有版本 [root12 ~]# nginx -v nginx version: nginx/1.22.01、首先在官网下载软件包,地址:nginx: download 2、把要 1.24.0 拖进 /opt 目录后,解压&#xf…

抖店是怎么运营做起来的?一文详解抖店的运营逻辑和流程,可收藏

我是王路飞。 很多人都知道现在的抖音有【商城】,进入之后就是一个个的抖音小店了,也知道抖店的红利。 但是抖店具体是怎么运营并且做起来的,就不太清楚了,因此很多新手明明眼馋抖店的红利,却又无从下手。 今天这篇…

YOLOv9尝鲜测试五分钟极简配置

pip安装python包: pip install yolov9pip在https://github.com/WongKinYiu/yolov9/tree/main中下载好权重文件yolov9-c.pt。 运行下面代码: import yolov9model yolov9.load("yolov9-c.pt", device"cpu") # load pretrained or c…

Spring综合漏洞利用工具

Spring综合漏洞利用工具 工具目前支持Spring Cloud Gateway RCE(CVE-2022-22947)、Spring Cloud Function SpEL RCE (CVE-2022-22963)、Spring Framework RCE (CVE-2022-22965) 的检测以及利用,目前仅为第一个版本,后续会添加更多漏洞POC,以及…

【Flink精讲】Flink性能调优:CPU核数与并行度

常见问题 举个例子 提交任务命令: bin/flink run \ -t yarn-per-job \ -d \ -p 5 \ 指定并行度 -Dyarn.application.queuetest \ 指定 yarn 队列 -Djobmanager.memory.process.size2048mb \ JM2~4G 足够 -Dtaskmanager.memory.process.size4096mb \ 单个 TM2~8G 足…

【机器人学导论笔记】三、操作臂正运动学

3.1 概述 操作臂正运动学研究操作臂的运动特性,主要涉及与运动有关的几何参数和时间参数。本章中,只研究静止状态下操作臂连杆的位置和姿态。 处理这些复杂的几何参数需要一些步骤:首先需要在操作臂的每个连杆上分别固接一个连杆坐标系&…