本篇主要介绍数据类型相关理论,本篇不涉及代码。
目录
数据结构起源
很早以前的计算机就是来处理数值计算的,数据就是程序的处理对象,数据元素是组成数据的基本单位,数据对象是性质相同的的数据元素的集合 数据元素之间不是独立的、存在特定的关系,这些关系即结构。
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科
1968年美国唐欧克努教授开创了“数据结构”的最初体系,他所著的计算机程序设计技巧第一卷基本算法是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作,从20世纪60年代末到70年代初,出现了大型程序,软件也相对独立,结构程序设计成为程序设计方法学的主要内容。人们越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构。加上设计一种好的算法,从20世纪70年代中期到80年代初,各种版本的数据结构著作也就相继出现。
基本概念术语
巧妇难为无米之炊,再复杂的数据结构原理也要从数据说起。
数据
是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
除了1、2、3这样的整数或者1.5、3.333、7.89532这样的小数,像字符、声音、图像、视频这些非数值类型的也是数据。
我们百度可以搜索文字、图片,上课用到的课本、书籍都可以作为数据,分享使用。
这里定义的数据,就是满足以下两个条件的符号:
- 可以输入到计算机中
- 能被计算机程序处理
数值类型的数据可以计算,非数值类型的比如图片也可以通过编码手段变成字符。
计算机对于图片的识别,可参见拙作前三分之一内容:
数据对象
性质相同的数据元素的集合,是数据的子集。
“人” 通过很多个人组成。不同的姓名、性别、生日。。。
那么! 相同姓名 相同的性别 相同的生日 的人 就可以组成一个数据对象。
数据元素
是组成数据的,有一定意义的基本单位,在计算机中通常被作为整体处理。
数据元素也叫做结点或记录,在计算机程序中通常作为一个整体进行考虑和处理。例如,一本书的书目信息为一个数据元素。
数据元素是用一组属性描述定义、标识、表示和允许值的一个数据单元。
数据项
一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位。
数据项是具有独立含义的最小标识单位,是数据元的一个具体值,是数据记录中最基本的、不可分的有名数据单位。
数据结构
不同的数据元素之间不是独立的,而是存在特定的关系,这些关系都被称为结构。
结构,简单的理解就是关系。分子结构不就是组成分子的原子之间的排列关系吗。
相互之间存在一种或多种特定关系的数据元素的集合就是数据结构。
逻辑结构&物理结构
根据视点不同,逻辑有两种分类方式
逻辑结构
描述数据对象中数据元素之间的相互关系
1、集合结构 除了同属一个集合,没有其他关系
2、线性结构 数据元素之间一对一的关系
3、树形结构 数据元素之间一对多关系
4、图形结构 数据元素之间多对多关系
物理结构
数据的逻辑结构在计算机中的存储形式
- 顺序存储结构,是把数据元素存放在地址连续的存储单元里,数据的逻辑关系和物理关系是一致的。
- 链式存储结构,是把数据元素存放在地址任意的存储单元里,如图:
数据类型
一组性质相同的值的集合以及定义在此集合上的一些操作的总称
数据类型定义
- 原子类型,是不可以在分解的基本类型,包括整型,实型、字符型等。
- 结构类型,由若干个类型组合而成,是可以再分解的。例如,若干整数组成的整数集合。
抽象数据类型
一个数学模型以及定义在该模型上的一组操作。
通过对已有的数据类型进行抽象,就可以得到抽象类型。抽象数据类型的特征是将使用与实现分离,从而实行封装和隐藏信息。抽象数据类型通过一种特定的数据结构在程序的某个部分得以实现,只关心在这个数据类型上的操作,而不关心数据结构具体实现。
例如,各种高级程序语言中都有整数类型,尽管它们实现的方法不同,但对程序员而言是“相同的”,即数学特性相同。从“数学抽象”的角度看,可称整数为一个抽象数据类型。
欢迎点赞、收藏、评论区交流,转载标明出处。
--------------------
下文连接: