一、基本概念与术语

学习基本概念与术语时,可以采用这张图进行类比学习,可帮助你更快掌握。

1、数据

定义:是数、字符以及所有能输入到计算机并被程序识别、处理的符号集合;所有的数据在计算机里都表示为二进制(0/1)

数据组成:数值类型(整型、实型等)、非数值类型(字符及声音、图像、视频等)

例子1:所有由数字、字符等组成的信息集合 例子2:搜索引擎

网页、MP3、图片、视频等分类

MP3是声音数据

图片是图像数据

而网页其实指的就是全部数据的集合,包括最重要的数字和字符等文字数据

说明:这里说的数据,其实就是符号,这些符号必须具备两个前提①可以输入到计算机中②能被计算机程序处理

类比:数据就是整个人类

2、数据元素

定义:数据元素是数据的基本单位,通常作为一个整体考虑;有一定意义的基本单位,在计算机中通常作为整体处理;也被称为记录、结点、顶点

数据元素的组成:可由若干数据项组成

例子1:个人信息表的每一行就是一个数据元素

例子2:畜类的数据元素是具体的动物

全世界所有的狗是数据,而你家里的一条狗就是数据元素

说明:类似分子,具有一定意义;类似结构体,具有一定意义

类比:描述人类,有意义的基本单位就是具体的人

3、数据项

定义:构成数据元素的不可分割的最小单位;若干数据项组成数据元素

例子1:个人信息表的每一行中的每一项就是一个数据项 例子2:泰迪狗这个数据元素,由眼、耳、鼻、嘴、手、脚等数据项组成

说明:类似原子,组成分子;类似结构体的属性,组成结构体;数据项是数据的最小单位;讨论问题时,数据元素才是数据结构中建立数据模型的着眼点,因为数据元素才具有一定意义(学化学的时候,在关于性质方面,我们都是讨论的分子)

类比:人的属性(姓名、身高、眼、耳、口等)是最小单位,去描述具体的人

4、数据对象

定义:具有相同性质的数据元素的集合;是数据的子集

例子1:几张个人信息表 例子2:数据对象所处地位
所有信息表是数据;几张是数据对象,是数据的子集

说明:性质相同指数据元素具有相同数量和类型的数据项;比如同一个结构体

类比:全人类是数据;北京的所有人是数据对象,是全人类的子集;个人是数据元素;人的属性是数据项

5、抽象数据类型(ADT)

抽象定义:取出事物具有的普遍性的本质;抽出问题的特征而忽略非本质的细节,是对具体事物的一个概括;抽象是一种思考问题的方式,它隐藏了繁杂的细节,只保留实现目标所必需的信息

例子1 例子2
1+2i、2-4i、……

尽管上面每个人形状不一样(有的发型像坨翔,有的头发很长)但是抽象出来,TA们都是人

尽管上面的实部和虚部的数字不一样,但是抽象出来它们都是复数
人是能够使用语言、具有复杂的社会组织与科技发展的生物,尤其是他们能够建立团体与机构来达到互相支持与协助的目的 实部、虚部组成的数
相关操作有思考、吃饭、睡觉等 相关操作有加减乘除等

抽象数据类型定义:抽象数据组织+与之相关的操作

ADT组成:数据对象、数据关系、基本操作集

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

注意:ADT定义只与逻辑特性相关;不涉及物理(存储)特性,不考虑怎么存储到计算机当中

抽象数据类型的标准格式:

例子:排队处理系统中的队列(先规划好,再去用代码实现出来)

说明:

①数据对象、数据关系的定义:采用数学符号和自然语言描述

②基本操作的定义:

基本操作名(参数表)
初始条件:〈初始条件描述〉
操作结果:〈操作结果描述〉
基本操作 有两种参数:赋值参数只为操作提供输入值;引用参数以"&"打头,除可提供输入值外,还将返回操作结果
初始条件 初始条件描述了操作执行之前数据结构和参数应满足的条件;若初始条件为空,则省略
操作结果 操作正常完成之后,数据结构的变化状况和应返回的结果

实现抽象数据类型:C/C++代码(比如上面例子中的队列,我们后面会学习如何用代码实现)

6、数据类型

定义:一个值的集合+定义在此集合上的一组操作的总称(具体将ADT用代码实现出来)

数据类型的作用:用来说明变量或表达式的取值范围、存储方式;说明所能进行的操作

例子:整数数据类型
取值范围:给整型变量赋值时不能超出取值范围
值的集合:所有整数
一组操作:适合于整数的操作,如加、减、乘、整除、取余

为什么需要数据类型:计算机中,内存也不是无限大;针对具体的类型、所设计的操作,分配不同的内存空间,以优化内存使用

分类:

原子类型 值不可再分的数据类型,如int整型
结构类型 值可以再分为若干成分的数据类型,如结构体类型,整体是一个数据类型,结构体由int、double等原子类型,struct等结构类型组成
抽象数据类型 抽象数据组织+与之相关的操作,如抽象类

7、数据结构

结构定义:数据元素相互之间的关系;指各个组成部分相互搭配和排列的方式;不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构

类比:我们接触过的分子结构(CO₂),就是原子之间的关系

数据结构定义:相互之间存在一种或多种特定关系的数据元素的集合;数据元素并不是孤立、杂乱无序的,而是具有内在联系的数据集合;数据元素之间存在的一种或多种特定关系,也就是数据的组织形式

研究数据结构的意义:编写出一个“好”的程序,必须分析待处理对象的特性及各处理对象之间存在的关系

数据结构三要素:逻辑结构(对问题抽象后进行研究)、存储结构(对具体细节进行研究)、数据运算【注意必须要三者相同才能被认为是同一个数据结构】

说明:数据+关系=数据结构;逻辑结构决定算法设计;存储结构决定算法实现

二、数据结构的三要素

数据结构三要素 关注的方面
逻辑结构 是面向问题的
存储(物理)结构 是面向计算机的,其基本目标就是将数据及其逻辑关系存储到计算机的内存中
数据运算

运算的定义针对逻辑结构,指出运算的功能;

运算的实现针对存储(物理)结构,指出运算的具体操作步骤;

1、数据的逻辑结构

定义:是指数据对象中数据元素之间的相互关系;描述数据之间的逻辑关系,与存储结构无关(一种逻辑结构可对应多种存储结构)

两要素:数据元素、数据元素间的逻辑关系

说明:数据的逻辑结构可以看作是从具体问题抽象出来的数学模型;逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系

数据结构的逻辑结构:线性结构、非线性结构(树、图、集合)

示意图表示:每一个数据元素看做一个结点,用圆圈表示;元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示

四大逻辑结构:

线性结构(一一对应关系) 非线性结构(非一一对应关系)
树形结构 图形(网状)结构 集合
定义 一一对应关系 一对多关系 多对多关系 除同属一个集合外,再无其它关系
例子

下面这张图是严薇敏数据结构大体要学习的方向,后面详细深入学习,在此了解一下。

2、数据的存储(物理)结构

定义:是数据的逻辑结构(数据元素、关系)在计算机中的表示--映像;实际上就是如何把数据元素及其之间的关系存储到计算机的存储器中

说明:表示包括数据元素的表示和关系的表示;存储器主要是针对内存而言的,像硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述;数据的存储结构应正确反映数据元素之间的逻辑关系;如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点

数据元素之间关系在计算机中的表示方法:顺序映像、非顺序映像

数据结构的存储结构:顺序存储结构、链式存储结构、索引存储结构、散列存储结构

数据元素之间关系在计算机中的表示方法:

顺序映像 非顺序映像
定义 借助数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系 借助指针表示数据元素之间的逻辑关系
对应的存储结构 顺序存储结构 链式存储结构
实现 一般用数组实现 一般用指针实现,在存储这个元素的值的同时还存储了下一个元素的地址
例子
说明

①什么是数据域

数据元素由若干数据项构成时,数据项的表示称为数据域。

如一个数据元素(如链表结点)包含值域、指针域,这里的值域、指针域都是这个数据元素的数据域

四大存储(物理)结构:

顺序存储结构 链式存储结构 索引存储结构 散列(Hash)存储结构
定义 将逻辑相邻的结点存储在物理位置相邻的存储单元中;该方法得到的存储结构是顺序存储结构,更具体一般是由数组表示 不要求逻辑相邻的结点存储在物理位置相邻的存储单元中;该方法得到的存储结构是链式存储结构,更具体一般是由指针表示 存储结点时,额外存储地址,形式如<关键字,地址>;关键字用来标识唯——个结点,地址用来指向上述结点的指针

根据结点的关键字计算出结点的存储地址,形如location=Hash(key);key是关键字,Hash()是计算地址的散列函数,location是算出的存储该结点的地址;该方法本质上树顺序存储办法的扩展,后面学习散列表时详细介绍

优点 可以实现随机存取(也可以顺序存取)、每个元素占用最少的空间 不会出现碎片现象 检索速度快 检索、增加、删除结点操作很快
缺点 只能使用一整块相邻的存储单元,可能产生较多外部碎片 会因为指针而占用额外的存储空间,只能顺序存取 增加了附加的索引表,会占用更多空间;增、删数据时要修改索引表,会花费更多的时间 散列函数不好,会出现元素存储单元冲突,解决冲突会增加时、空开销
例子
说明

①区分存取结构和存储结构

存储结构就是表格上的四大存储结构,但是存取结构见下图详解

②链式存储结构存储单元是否连续

链式存储结构结点内存储单元地址一定连续;相邻结点存储空间不一定连续

③结点的存储密度

链式存储方法存储了额外的存储结构,所以存储密度不如顺序存储方法

3、数据运算

定义:施加在数据上的运算,包括运算的定义、实现

说明:运算的定义针对逻辑结构,指出运算的功能;运算的实现针对存储(物理)结构,指出运算的具体操作步骤

例子:针对复数有加法,加法的规则就是运算的定义;具体用代码去实现复数的加法就是运算的实现

【Ⅰ绪论】2.数据结构的基本概念相关推荐

  1. 一、【绪论】数据结构的基本概念

    数据结构的基本概念 1 基本概念 1.1 数据 Data 在数据结构中,数据是指一切可以被输入到计算机中并被计算机程序识别和处理的符号的集合. 1.2 数据元素 Data Element 数据元素是数 ...

  2. 天勤计算机考研高分笔记(一)绪论4数据结构与算法的基本概念

    1.3.1数据结构的基本概念 1.数据 数据是一种对客观事物的符号表示,是可以输入计算机中,并被计算机程序处理的符号的总称.(整数,实数,字符串) 2.数据元素(数据项< <数据结构,数据 ...

  3. 【数据结构】基本概念、大致内容

    数据结构专栏 简介 第一章 绪论 1.1 数据结构的基础概念 1.2 数据结构的内容 1.数据的逻辑结构和存储结构: 结束语 简介 数据结构是一门讨论"描述现实世界实体的数学模型(非数值计算 ...

  4. 第一课:数据结构的基本概念和术语

    数据结构   本课主题:数据结构的基本概念和术语 教学目的:了解数据结构的基本概念,理解常用术语 教学重点:基本概念:数据与数据元素 教学难点:数据元素间的四种结构关系. 授课内容: 一.数据.数据元 ...

  5. 基础数据结构和算法概念

    本文涉及更多的是概念,代码部分请参考之前写过的 2 篇博客 排序算法 基于Javascript 基本数据结构和查找算法 本文主要是基础的数据结构和算法概念,可能部分地方会涉及更高级的算法和算法,具体内 ...

  6. 以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用

    以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用 一.栈的概念介绍 在我们的生活中,总有这么一些例子,①食堂在堆放餐盘的时候,总是从下往上,在取餐盘的时候,又是从上往下:②最先放入厢式货车的 ...

  7. 考研数据结构学习与总结笔记---1.1数据结构的基本概念

    考研数据结构学习笔记---王道 数据结构的基本概念 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构 数据结构三要素 1.数据的逻辑结构 2.数据的存储结构 3.数据的运算 回顾与总结 ...

  8. 数据结构-王道2017-绪论-1.1 数据结构的基本概念

    1.数据结构的基本概念 1.1 数据:是信息的载体,是描述客观事物的属性的数.字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合. 1.2 数据元素: 数据元素是数据的基本单位,通常作为 ...

  9. 数据结构与算法(第一章 数据结构的基本概念 )

    说起数据结构与算法,他们之间的关系是怎么样的呢?某位dalao曾经这样说过: The relationship between the data structures and algorithms l ...

  10. 【数据结构】数据结构的基本概念(数据结构的三要素:逻辑、存储、运算)

    数据结构的基本概念 一.基本概念和术语 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构 二.数据结构三要素 1.数据的逻辑结构 2.数据的存储结构 3.数据的运算 三.习题 一.基本 ...

最新文章

  1. 在Ubuntu 16.04.3 LTS上运行go install出错的问题
  2. ADT 怎么删除logcat过滤规则
  3. 算法题目——多米诺骨牌问题(POJ-2663)
  4. golang的reflection(转)(一)
  5. DreamWeaver连接Tomcat用以编辑和测试JSP
  6. 查找系列合集-二分查找
  7. pytorch数据增强
  8. Keyboard Control
  9. php当前页面删除处理,php删除记录同时刷新当前页面的实现代码
  10. Delphi 3D Glscene安装
  11. 动图展示16个Sublime Text快捷键用法 ---------------物化的sublime
  12. [超详细] Apache网页优化:网页压缩与网页缓存超详细
  13. Linux内存映射——mmap
  14. 视频监控智能分析之火焰检测原理
  15. 开源VOSK引擎免费语音转文字部署
  16. 关于mysql中日期后面多一个 .0
  17. 超实用硬盘数据恢复工具介绍!永久免费
  18. JDP02-[策略模式]-鸭子模型
  19. 程序员的双十一剁手指南,看完不剁手算我输。
  20. Theta*: 连续环境下平滑的任意角度的路径规划

热门文章

  1. 学成在线网页制作(详细)
  2. 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度。 程序的输入是一个整数,表示华氏温度。输出对
  3. java,mqtt-client开发创建客户端
  4. 网页设计与制作(五)
  5. 《数据结构与算法 Python语言实现》书评与学习心得
  6. Java遍历list集合转换成PDF
  7. 32位和64位操作系统的最大内存计算方法
  8. 独家专访李林 | 回归火币后的一年
  9. 企业发放的奖金根据利润I提成
  10. 像计算机科学家一样思考在线,如何像计算机科学家一样思考?(女生篇)