zoukankan      html  css  js  c++  java
  • 数据结构基础概念录

    前言

    回忆与自我理解迭代

    概念

    数据:
    什么是数据?
    是描述客观事物的符合,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

    个人理解:

    以人来说,把人感知的一切都叫做数据,比如说树、花。他们在我们心中代表一种符号。但是并不代表我们不认识的,就不叫数据,他们在我们心中的符合是不认识,这依然是一个符合。

    数据元素:

    是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。

    这个比较抽象,而且没有具体的指向。比如我们把一个班级的人作为数据研究对象,那么数据元素就是人,因为是由人组成了班级的人。

    关键点在于由什么组成,如果可以由什么组成那么就可以说是数据元素。

    数据项:

    一个数据元素可以由若干个数据项组成。

    比如我们研究班级健康,数据元素自然就是人了。那么数据项是,眼、鼻子他们的数据。
    比如研究班级身高,那么元素也就是人了,那么数据项就是身高

    数据项是数据不可分割的最小单位。

    数据对象:
    是性质相同的数据元素的集合,是数据的子集。
    当初我有点混淆了数据对象和数据,后来我就想明白了。
    数据是可识别的符合,是一个整体的概念,计算机可识别都叫做数据。
    数据对象,用我刚才的例子上说,研究一个班级,那么这个班级就是数据对象被,里面的人就是数据元素,他们当然就具有相同性质了,班级也就是人的集合。
    这个数据的子集很让人误解,其实意思就是万物为宇宙(数据),其他的都是数据的子集。

    数据结构:
    是相互之间存在一种或者多种特定关系的数据元素的集合。
    比如人之间有亲情等关系。

    数据结构的物理逻辑:
    是指数据的逻辑结构在计算机的存储形式。
    顺序存储结构:
    是把数据元素存放再地址连续的存储单元里,其数据间的逻辑关系和物理关系一致的。
    链式存储结构:
    把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

    逻辑结构:

    是指数据对象中数据元素之间的互相关系。

    常见的逻辑结构:
    1.集合结构
    2.线性结构
    3.树形结构
    4.图形结构

    在这里提及一下我当初的一个疑问:

    为什么物理结构基本都是一对一的关系,为什么逻辑结构是可以一对多呢?
    比如说,数组是顺序存储结构,如果把第一个数当中父节点,设置为a,那么把2a+1就当作左节点,只是认为认为,物理上根本不知道。

    数据类型与抽象数据类型:

    一想到数据类型,可能我们第一时间想到的就是int,short,long这些。
    是的,这些就是数据类型。

    数据类型的定义:

    是一组性质相同的值的集合及定义再此集合上的一些操作的总称。

    为什么要有数据类型,这就涉及到为什么int32 占用4个字节。

    如果没有数据类型的话,那么int32该申请多少内存呢?这时候就把int32定义了范围,一旦范围定义了,那么也就定义了所占用的空间。

    数据类型分为两种:
    原子类型:是不可以再分解的类型,包括整数、字符型等。
    结构类型:是还以再分的,比如整数数组,里面具有整数类型。

    抽象数据类型:是指一个数据模型及定义在该模型的操作。
    比如说一个人,我们可以定义一个person 的类型,里面包括了手和脚,里面也有操作叫做跑步和洗衣服。
    这时候person就是抽象的,是我们自己定义出来的,计算机也不知道这是person。
    在抽象数据类型中,不是只有我们定义的才是抽象的,比如说整数类型,我们想到了int。
    是的,在数据类型中,int中我们把他定义为一种数据类型。但是它再数据类型中并不代表整数。
    关注数据类型,关心的是其值范围,比如说无符号 int32,范围为-2147483648~2147483647,然后可以的操作是什么。
    如果把int当作一个整数,那么就是抽象数据结构,关心的是数据模型,整数是没有小数的,整数是有正负的,关心的是其特征。
    总结:int是数据类型,而不是整型这个概念。抽象类型中,关心的是数据模型。

  • 相关阅读:
    JS中的getter与setter
    Node.js中exports与module.exports的区别
    JS中的匿名函数自执行、函数声明与函数表达式
    JS实现千分位
    JS中的new操作符原理解析
    JS中null与undefined的区别
    JavaScript中callee与caller,apply与call解析
    解决vue路由与锚点冲突
    jQuery中deferred的对象使用
    Vue的生命周期
  • 原文地址:https://www.cnblogs.com/aoximin/p/12387400.html
Copyright © 2011-2022 走看看