一起学数据结构1

Posted 程序媛 泡泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起学数据结构1相关的知识,希望对你有一定的参考价值。

看到这个帖子的你,已经开始研究更深层次的计算机知识啦
越底层的知识相对来说就越难,不过没关系,慢慢啃
多学一点就多进步一点,今天的你也要继续加油鸭!

一些基本概念

在学习数据结构之前,一些基本的概念还是需要科普一下的:

1. 什么是数据

数据其实就是各种各样的信息,比如数字、符号、图片等等等等,这个数据的范围其实是要比你想象中更大的,凡是能输入到计算机里并且能够被计算机进行识别和处理的内容都是数据。
所以我们做的各种操作其实都是围绕数据进行的,你也可以把数据理解成计算机程序各种加工的“原材料”。

2. 什么是数据元素

提到数据这个概念其实还是很宽泛的,所以为了细化,就有了数据元素这个概念。数据元素是数据的基本单位,比如我们在做公司业务的时候,一个员工的信息就可以看作一个数据元素。这个数据元素中又包含多个数据项,比如:员工的姓名、性别、职位、所属部门等等。
看到这里是不是还好?那我们继续~

3. 数据对象

数据对象指的是一系列有相同性质的数据元素的集合。这个概念有点抽象,举个栗子:
整数有哪些?整数数据对象就可以表示成这样的一个集合:N = 0,±1,±2…

4. 数据结构

其实,不管我们要处理什么问题,数据元素都不是独立存在的,数据与数据之间是有关系的。我们把数据元素相互之间的关系称为结构。
数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。
一个算法的设计取决于其所选择的逻辑结构,而算法的实现取决于其所采用的存储结构。所以逻辑结构与存储结构是两个密不可分的方面。
这段话可能对初入门的你有点难度,但是没关系,后续会进一步展开讲解,此处只是一个整体概括哦!

数据结构的三要素

接下来我们来详细描述一下数据结构的三要素:

1. 数据的逻辑结构

逻辑结构指的就是我们通过逻辑关系来整理描述数据。这个与数据的存储无关,是独立于计算机的。
数据的逻辑结构可以分析线性结构与非线性结构。线性表就是很典型的线性结构,而集合、树、图等是典型的非线性结构。
再做个解释辅助理解:
集合:指的是结构中的数据元素之间,除了同属于一个集合以外,没有其他的关系,比如一个班级里可以容纳多个不同的学生

线性结构:指的是结构中的数据元素之间,只存在一对一的关系,比如,一个人只有一个唯一的身份证号

树形结构:指的是结构中的数据元素之间,存在一对多的关系,比如,一个爷爷有多个孙子

图状结构或网状结构:指的是结构中的数据元素之间,存在多对多的关系,比如一个班级有多个老师授课,一个老师也可以带多个班级

逻辑结构分类如图所示:

2. 数据的存储结构

存储结构指的就是数据如何在计算机中表示,也称作物理结构。它包括数据元素的表示和关系的表示。
数据的存储结构是使用计算机语言实现这些数据的逻辑结构。
主要的数据存储结构有:顺序存储、链式存储、索引存储和散列存储。
接下来讲解下不同存储结构的特点:

1. 顺序存储

把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
优点:可以实现随机存取,每个元素占用最少的存储空间。
缺点:只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。
比如:数组的结构 数组的概念不清楚的话,可以参考这个详细笔记

2. 链式存储

不要求逻辑上相邻的元素在物理位置上也相邻,借助只是元素存储地址的指针来表示元素之间的逻辑关系。
优点:不会出现碎片现象,能充分利用所有存储单元。
缺点:每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。
比如:LinkedLinst的存储结构 LinkedList的相关内容可以参考这个笔记

3. 索引存储

在存储元素信息的同时,还建立附加的索引表,索引表中的每项称为索引项,索引项的一般形式是(关键字、地址)
优点:查询速度快
缺点:索引表需要占用额外的存储空间,此外,修改数据也需要同时修改索引表,会花费较多的时间
比如:我们写了一个论文,为了方便查找,可以生成一个对应的目录,查询速度快,但是如果修改了论文,也需要同步修改目录

4. 散列存储

根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。
优点:查询、增加、删除元素的操作都很快
缺点:如果涉及的哈希函数不好,则可能会出现元素存储单元的冲突,解决冲突会增加时间和空间的开销
比如:HashMap的存储过程HashMap的相关内容可以参考这个笔记

3. 数据的运算

施加在数据上的运算包括运算的定义和实现。
运算的定义是针对逻辑结构的,指出运算的功能;
运算的实现是针对存储结构的,指出运算的具体操作步骤。
这个后面再进一步展开讲解。

以上是关于一起学数据结构1的主要内容,如果未能解决你的问题,请参考以下文章

一起学数据结构1

一起学数据结构1

canvas平台怎么加入班级

一起学源码-微服务Ribbon 源码一:Ribbon概念理解及Demo调试

学完了js的知识,一起分享总结知识点

数组的概念