参考价值:已完结、可作为教程使用


数据

数据(data)

  • 什么是数据?

    数据就是描述客观事物的符号,可以是字符、数字、视频、音频、图片等。

  • 数据有什么特点?

    1. 可以被计算机识别
    2. 可以被计算级操作

数据元素(data element)

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

比如:在畜禽类这个数据中,鸡、鸭、牛、羊就都是是数据元素。

数据项 (date item)

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

比如:人这样的数据元素可以有鼻子、嘴巴、眼睛、手、脚这样的数据项,也可以有名字、性别、年龄、家庭住址、身份证号这样的数据项。

注意:

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

  • 通常研究时我们研究的基本单位是数据元素

    比如:当我们研究生物时,我们会以猪、牛、羊等数据元素为基本研究单位,而不是以牛的眼睛、牛的尾巴等数据项作为基本单位去研究。

数据对象(data object)

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

  • 什么是性质相同?

    性质相同就是两个数据元素具有相同数量和类型的数据项。

  • 数据和数据对象

    由于数据对象是数据的子集,在实际应用中,数据对象往往和数据有相同的性质。在不产生混淆的情况下,我们都将数据对象简称为数据。

    姓名 性别 年龄
    小明 12
    小红 11
    小磊 13
    课程名n 学时 学分
    数据结构与算法 40 5
    计算机组成原理 25 4
    操作系统 20 4

    两个列表都是数据,两个列表是两个数据对象,列表的每一行都是一个数据元素,每一列都是数据项。

数据结构(data structure)

数据之间都不是完全独立存在的,不同数据之间都特定的关系,这些关系就是结构

  • 按照视角的不同,我们可以把数据结构分为逻辑结构物理结构

逻辑结构

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

  1. 集合结构

    集合结构中的数据元素除了在一个集合之外,没有任何其他关系。

    一些数学中的数字集合,比如数据对象自然数中的是数据元素1、2、3、4、5之间就没有任何和其他的逻辑关系。

  2. 线性结构

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

  3. 树形结构

    树形结构中的数据元素之间存在一对多的关系。

  4. 图形结构

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

物理结构(存储结构)

物理结构是指如何把数据元素储存在存储器中,因此也叫存储结构。数据的存储结构如何正确的反应数据元素之间的逻辑结构是物理结构的难点和重点。

  1. 顺序存储结构

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

    数组的存储结构就是顺序存储结构

  2. 链式存储结构

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

数据类型

  • 什么是数据类型?

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

  • 我们为什么要分出各种数据类型?

    根本原因是内存是十分珍贵的,我们必须以最小的内存存放最多的数据,从而降低成本。

  • 数据是如何和被储存到内存当中的?

    要想把数据存储在内存中,必须在内存中开辟出一片空间出来,然后把数据塞到这片空间中,而且这片空间的大小必须大于等于是数据所占用的空间。

  • 为什么需要设置各种数据类型?

    比如说:养鸡,我们有一个1平方千米的养鸡场。当我们养的鸡的数量比较少时,我们可以随意地把鸡撒到养鸡场里。这个时候养鸡场的空间价值并没有显得那么珍贵。但随着我们养的鸡的数量不断增多,我们不得通过设置篱笆等方式限制鸡的活动范围,从而使养鸡厂里能养更多的鸡。甚至到最后一个鸡一个笼子,大笼子装大鸡,小笼子装小鸡,把养鸡场的空间价值开发到极致。

    数据与内存的关系就是到了后期的鸡与养鸡场的关系,每一份内存都十分珍贵。如果我们把一个2字节的数据存放到一片8字节的空间中,这种操作是极为浪费的行为。因此我们为各种类型的数据设置了各种数据类型,把数据存储到对应数据开辟出的空间当中,既不会因为开辟的空间太小导致数据失真,有可以避免开辟的空间太大,造成过多的浪费。

抽象数据类型

  • 抽象是什么?

    抽象是指抽取出事物具有的普遍性的本质。

  • 什么是抽象数据类型?

    一个数学学模型及定义在该模型上的是一组操作。

    比如:智能手机、PC、平板上都有整型数据,但他们在各种计算机中事务实现方式并不一样,所以这些整型又不完全相同。但由于整型的本质是1、2、3、4 . . . 等整形数据的集合,所以我们可以抽象出整型这个抽象数据类型。这个整型同时代指各个计算机上的整形数据,并且这个数据类型只用考虑其抽象出来的特性,其他特性都被隐藏不用考虑。

    当然,抽象数据类型的应用很广,我们甚至可以抽取几个变量的特性进而抽象出一个新的变量。

    比如:当我们编写绘图相关的软件的时候,总会有成对出现的x、y变量(代表横坐标轴和纵坐标轴)。为了方便,我们可以定义一个point的抽象数据类型,他有x、y两种整型变量。

  • 抽象数据类型的核心理念:

    抽象数据类型体现了程序设计中问题分解抽象信息隐藏的特性。

    抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。

——参考资料《大话数据结构》