【数据结构】初识数据结构

news2024/11/17 3:30:38

引入:

哈喽大家好,我是野生的编程萌新,首先感谢大家的观看。数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累。我想让大家知道的是:数据结构非常有趣,很多算法是智慧的结晶,我希望大家在学习数据结构的过程是一种愉悦的心情感受。因此我开创了《数据结构》专栏,在这里我将把数据结构内容以有趣易懂的方式展现给大家。

1.数据结构的起源

早期人们都把计算机理解为数值计算工具,就是感觉计算机时用来计算的。所以计算机解决问题时,应该是先从具体问题中抽象出一个适当的数据类型,设计出一个解此数据模型的算法,然后在编写程序,得到一个实际的软件。

 可现实中,我们更多的不是解决数值计算的问题,而是需要一些科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好的解决问题。所以:数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系和操作等相关等问题的学科。这样看来是不是有点难以理解,我直接简单点概括:研究数据在计算机中的存储方式。1968年,美国的高德纳教授在其所写的《计算机程序设计艺术》第一卷《基本算法》中,较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系。同年,“数据结构”作为一门独立的课程,在计算机科学的学位课程中开始出现,也就是说,从那之后计算机相关专业的学生开始接收“数据结构”的“折磨”--其实说是享受才对。

2.基本概念和术语

说到数据结构是什么,我们得先来了解什么时数据。正所谓“巧妇难为无米之炊”,再强大的计算机,也是要有“米”下锅才可以干活的,否则就是一堆破铜烂铁,这个“米”就是数据。

2.1数据

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别的,并输入给计算机处理的符号集合,数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图片、视频等非数值类型。比如我们现在常用的一些搜索引擎,一般会有网页、图片、视频等分类,图片是图像数据、音频当然是声音类型,视频更不用说了,而网页其实指的就是全部数据的搜索,包括重要的数字和字符等文字数据。再比如我们在学校学习的各种各样的知识都可以成为数据,分享给大家使用。也就是说,我们这里说的数据,其实就是符号,而这些符号必须具备两个前提:

  1. 可以输入到计算机中
  2. 能被计算机程序处理

2.2数据元素

数据元素是组成数据的、具有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。比如:在人类中什么是数据元素,当然是人啦。

2.3数据项

数据项一个数据元素可以由若干个数据项组成,比如人这样的数据元素,可以有眼睛、耳朵、手等这些数据,也可以有姓名、年龄、性别等数据。数据项是数据不可分割的最小单位。在“数据结构”中,我们把数据项定义为最小的单位,是有助于我们解决问题的,所以,记住数据项是数据的最小单位。但当我们真正讨论问题的时候,数据元素才是数据结构中建立数据模型的着眼点。当我们讨论一本书时,是讨论这本书里面的角色这样的“数据元素”,而不是针对这些角色的姓名、年龄这些展开讨论。

2.4数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。什么叫性质相同,是数据元素相同数量和类型的数据项,比如,在刚才的例子中,人都有姓名、性别等相同的数据项。既然数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同的性质,在不产生混肴的情况下,我们都将数据对象简称为数据。

2.5数据结构

结构简单点来说就是关系,比如在化学中我们学过的分子结构,就是说组成分子的原子之间的排列方式。严格点说,结构是指各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构,那数据结构是什么呢?数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在计算机中,数据元素并不是孤立、杂乱无章的,而是具有内在联系的数据集合,数据元素之间存在的一种或者多种特定关系,也就是数据的组成形式。

3.逻辑结构和物理结构

按照视点的不同,我们把数据结构分为了逻辑结构和物理结构两部分。

3.1逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。逻辑结构主要分为4种。

3.1.1集合结构

集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间又没有其他的关系。各个数据元素是“平等的”,他们的共同属性是“同属于一个集合”。数据结构中的集合关系就类似于数学中的集合。

3.1.2线性结构 

线性结构:线性结构中的数据元素之间是一对一的关系。

3.1.3树形结构

树形结构:树型结构中的元素之间存在一种一对多的层次关系。(有点像我们的族谱)

3.1.4图形结构 

图形结构:图形结构的数据元素是多对多的关系。

 我们在用示意图表示数据的逻辑结构时,要注意两点:

  1. 将每一个数据元素看作一个结点,用圆圈表示。
  2. 元素之间的逻辑关系用结点之间的连线表示。如果这个关系是有方向的,那就像我这个一样用箭头表示。

3.2 物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式。数据的存储结构正确反映数据元素之间的逻辑关系这才是最为关键的,数据元素的存储结构形式有两种:顺序存储和链式存储。在未来我们学习顺序表和链表时会更加深入学习。

3.2.1顺序存储结构

顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。这种存储结构说来也简单,就是排队,数组元素都按顺序排好,每个元素占一小段空间。和我们学习过的数组一样。

3.2.2链式存储结构

链式存储结构:把数据元素存放在任意的存储单元里面,这组存储单元可以是连续的,也可以是不连续的。打个比方就像我们去医院挂号,每个人去领个号,等待的时候你想去哪就去哪,只要及时回来就行。数据元素的存储关系并不能反映他的逻辑关系,因此需要一个指针存放数据元素的地址,这样就能通过地址找到相关数据元素的位置了。

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

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

相关文章

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人,另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生) 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述:清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述:清华源创建不成功 本地配置了清华源,但是在创建虚拟环境时不成功,报错如下。 图片若看不清&…

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job(推荐该方式构建)2.4 Docker安装redis2.5 Docker安装mysql 1 前言 上一篇介绍了Docker的基础概念,带你 入门Docker&#xff0c…

初识webpack项目

新建一个空的工程 -> % mkdir webpack-project 为了方便追踪执行每一个命令,最终产生了哪些变更,将这个空工程初始化成git项目 -> % cd webpack-project/-> % git init Initialized empty Git repository in /Users/lixiang/frontworkspace/…

STM32微秒级别延时--F407--TIM1

基本配置: TIM1挂载在APB2总线上,150MHz经过15分频,得到10MHz计数频率,由于disable了自动重装载,所以只需要看下一次计数值是多少即可。 void TIM1_Delay_us(uint16_t us) //使用阻塞方式进行延时,ARR值不…

Colibri for Mac v2.2.0激活版:专业级无损音乐播放器

Colibri for Mac是一款专为Mac用户设计的高分辨率无损音乐播放器。它基于BASS技术构建,为用户带来极致的音频体验。Colibri支持所有流行的无损和有损音频格式,如FLAC、MP3、AAC等,确保音乐播放的清晰度和完美度。其独特的清晰比特完美播放技术…

hadoop学习---基于Hive的教育平台数据仓库分析案例(一)

案例背景: 大数据技术的应用可以从海量的用户行为数据中进行挖掘分析,根据分析结果优化平台的服务质量,最终满足用户的需求。教育大数据分析平台项目就是将大数据技术应用于教育培训领域,为企业经营提供数据支撑。 案例数据产生流…

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统(华为技术有限公司开发的分布式操作系统) 华为鸿蒙系统(HUAWEI HarmonyOS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的分布式操作系统。 华为鸿蒙…

贪心-耍杂技的牛

问题描述 农民约翰的 N头奶牛(编号为 1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。 奶牛们不是非常有创意,只提出了一个杂技表演: 叠罗汉,表演时,奶牛们站在彼此的身上,形…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层:处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories: 后端开发 tags: Django请求处理响应生成模板渲染表单处理中间件异常处理 第一章:Django框架概述 1.1 什么是Django?…

音视频开发之旅——实现录音器、音频格式转换器和播放器(PCM文件转换为WAV文件、使用LAME编码MP3文件)(Android)

本文主要讲解的是实现录音器、音频转换器和播放器,在实现过程中需要把PCM文件转换为WAV文件,同时需要使用上一篇文章交叉编译出来的LAME库编码MP3文件。本文基于Android平台,示例代码如下所示: AndroidAudioDemo Android系列&am…

OpenAI下周将发布ChatGPT搜索引擎,挑战谷歌搜索!

目前,多方位消息证实,OpenAI将会在5月9日上午10点公布该消息,大约是北京时间周五的凌晨2点。 5月3日,前Mila研究员、麻省理工讲师Lior S爆料,根据OpenAI最新的SSL证书日志显示,已经创建了search.chatgpt.c…

数据库开发关键之与DQL查询语句有关的两个案例

案例 案例1 条件分页查询 查看项目经理提供给我们的需求文档 模糊匹配的含义是 只要包含"张"就可以 use dduo;-- 按照需求完成员工管理的条件分页查询 根据输入条件 查询第一页的数据 每页展示10条记录 -- 输入条件: -- 姓名: 张 -- 年龄&…

基于Java+SpringBoot+Vue前后端分离音乐播放器系统设计与实现(有视频讲解)

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

统一大型语言模型和知识图谱:路线图

【摘要】 大型语言模型(LLM),如ChatGPT和GPT4,由于其涌现能力和泛化性,正在自然语言处理和人工智能领域掀起新的浪潮。然而,LLM是黑箱模型,通常无法捕捉和获取事实知识。相反,知识图…

QQ音乐尽享海量高品质曲库,无广绿色版 PC端 v20.05.0

01 软件介绍 QQ音乐,作为一个在线音乐平台,它已经超越了传统音乐播放软件的界限,演变成为一个全面的音乐生态系统。该平台为用户提供了丰富的服务,包括无尽可能的音乐资源、定制化的个性推荐、卓越的高保真音乐体验和互动式的社交…

二叉树的迭代遍历 | LeetCode 144. 二叉树的前序遍历、LeetCode 94. 二叉树的中序遍历、LeetCode 145. 二叉树的后序遍历

二叉树的前序遍历(迭代法) 1、题目 题目链接:144. 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2&#x…

分布式锁之-redis

什么是分布式锁? 即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级成了…

NumPy库与PyTorch库的异同点

目录 1.单位的创建和操作 1.创建 2.形状变换 2.数学和统计操作 1.矩阵乘法 2.广播 3.统计计算 3.GPU支持 4.在深度学习中的作用 5.应用范围 NumPy库为数组服务,PyTorch库为张量服务,这是最本质的区别。 1.单位的创建和操作 1.创建 NumPy:使…

SQL注入-基础知识

目录 前言 一,SQL注入是什么 二,SQL注入产生的条件 三,学习环境介绍 四、SQL注入原理 五,SQL中常用的函数 六,关于Mysql数据库 前言 在网络安全领域中,sql注入是一个无法被忽视的关键点&#xff0c…