前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >到底什么是数据结构?我认为是这样的

到底什么是数据结构?我认为是这样的

作者头像
小明爱学习
发布2020-08-05 15:15:31
5920
发布2020-08-05 15:15:31
举报
文章被收录于专栏:smh的技术文章smh的技术文章

什么是数据结构?

数据结构这四个字我们拆分两部分,数据和结构就构成了数据结构。

数据

数据就是能够输入到计算机并且能够被处理的符号的,大家不要过多纠结这句话。

数据则可分为:数据项,数据元素,数据对象。

数据项:最小单位,不可在拆分。

数据元素:是比较完整的单位,可以理解为我们高级语言中的class。

数据对象:是性质相同的数据元素的集合,高级语言中的List<cLass>。

最直观的就是数据库中的表:一张表就是一个数据对象,一条数据则是数据元素,数据项则是字段。

结构

结构分为逻辑结构和物理结构。

逻辑结构:就是就是指的元素之间的关系,常用的就是:集合,线性,树,图。

物理结构(存储结构):顺序存储结构和链式存储结构

顺序存储:是把数据元素存放在地址连续的存储单元里。

链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的

就是由上述的数据和结构构成了数据结构,这样大家应该就能明白了,数据结构就是由数据对象中的元素的关系(逻辑结构)和存储结构所构成。

我们来举一个实例:int[] myArray = { 5, 9, 15, 22, 30 };

这里我声明了一个数组,首先数组中五个数字,他们在就叫数据元素,不叫项。因为数据元素是数据基本单位。但是有人就有疑问,这几个数字已经是最小单位了,为什么不是数据项,所以:数据元素有时就是数据项。


我们重新定义一个数组:string[] myArray = {“张三|男”,“李四|男”,“王五|女” };

这里面三个string就可以理解为数据元素,因为我们可分割两部分,所以是元素还是项是看自己传入的数据,你自己认为能否分割,没有硬性必须要分割才可以。


接着上面那个int数组讲,首先数据有了:5,9,15,22,30.

了解过数组的朋友应该知道:数组其实顺序非常重要,所以存储结构数组是“顺序存储结构”,然后逻辑结构是一个线性表。

所以数组就是一个:线性表的顺序表示的数据结构。

在严蔚敏的《数据结构》中被定义为一个二元组(D,S):D为数据元素的有限集,S则是D上关系的有限集。但是我认为仅仅说元素和元素上关系构成不够,应该把关系说的在明确一点,关系就是数据的存储结构和数据之间的逻辑结构,我认为这样才明确。

什么是算法?

就是在上述描述的数据结构的基础上,进行操作,就是算法。比如对上述的数组进行“增删改查”这就是算法。

主要现在很多课程在讲数据结构时,不免都会讲到算法,其实两者是可以分开的。

数据结构就是如何存储,算法就是此数据结构上进行的一些操作。因为数据结构不同,那对应的算法肯定也不相同。

比如我仍然有1,4,5,8四个数据,由于这四个数没有任何关系,在关系上我们仍然采用线性表,但是我们存储方式采用链式存储,那么这就是一个线性链表,就不能等同于我们高级语言中的数组,那么对应的算法也会改变。

注意:算法永远是在数据结构上产生。

顺序表和链表的详解:线性表的顺序表和单链表分析

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年08月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是数据结构?
    • 数据
      • 结构
        • 什么是算法?
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档