文章主要是关于大话数据结构加上自己所看视频的理解的学习笔记,记录自己的学习和便于以后复习。最重要的是对自己起一个监督作用。
数据结构是一门研究非数值计算程序设计问题中的操作对象,以及对象之间的关系和操作等相关问题的学科。
程序设计就是数据结构和算法的结合。
基本概念和术语
1、数据
数据:是描述客观事物的符号集合,是计算机能够操作的对象,是能够输入给计计算机,并能够通过计算机处理的符号集合。
数据不仅包括整型和实型等数值类型,还包括字符、声音、图像等非数值类型。
总结以下我们所说的数据其实就是符号,且具备以下的特征:
可以输入到计算机中
能够被计算机程序处理
对于数值型数据可以直接进行数值计算
对于字符型数据需要进行非数值的处理,而对于声音、图像、视频等可以通过编码的手段将其变成字符型数据来处理。
2、数据元素
数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体来处理。也被称为记录。
比如,在人类中数据元素为人
3、数据项
数据项:一个数据元素可以由若干个数据项组成。
数据项是不可分割的最小单位。
4、数据对象
数据对象:是性质相同的数据元素的集合,是数据的子集。
性质相同是指具有相同类型和相同数量的数据项的元素
数据对象是数据的子集,在不产生混淆的情况下我们将数据对象简称为数据。
5、数据结构
结构简单的理解就是关系,比如分子结构就是指组成分子的原子之间的排列方式。在现实世界中不同的数据元素之间不是独立的,而是存在特定的关系,我们称这种关系为结构。
数据结构可以定义为:相互之间存在一种或多种特定关系的数据元素。
这也是数据的组织形式。
数据结构按照视点不同可以分为以下两种:
逻辑结构:
逻辑结构:是指数据对象中数据元素之间的相互关系。
分为以下四种:
1、集合结构
集合结构:是指数据元素之间除了同属于一个集合外没有其他的关系。
各个元素之间是平等的。
2、线性结构
线性结构:是指数据元素之间存在一对一的线性关系。
图见大话数据结构书籍
3、树形结构
树形结构:是指数据元素之间存在一对多的层次关系。
图见大话数据结构书籍
4、图形结构
图形结构:是指数据元素之间存在多对多的关系
图见大话数据结构书籍
逻辑关系是用来解决具体问题的,在对问题理解的基础上,选择一个合适的数据结构来表示数据元素之间的逻辑关系。
物理结构(也称为存储结构)
物理结构:是指数据的逻辑结构在计算机中的存储形式。
分为以下两种:
顺序存储结构:是把数据元素存放在连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
图见书籍
说白了就是排队存储,按照逻辑关系一个一个的放入存储单元里。
链式存储结构:就是吧数据存放在任意的存储单元中,可以是连续的也可以是不连续的。
这种存储关系不能反映数据元素之间的逻辑关系,因此需要一个指针存放数据元素的地址,这样可以通过地址找到相互关联的数据元素的位置。
图见书籍
这种存储结构比顺序存储灵活的多。
总结一下:
逻辑结构是面向问题的,而物理结构是面向计算机的,其目的是将数据及其逻辑关系存储到计算机中。
抽象数据类型
数据类型:是指一组性质相同的值的集合,以及定义在此集合上的一些操作的总称。
类型是按照值的不同进行划分的。在高级语言中每个变量、常量和表达式都有各自的取值范围,而类型就是用来说明变量和表达式的取值范围和所能进行的操作。
我的理解:数据类型是为了能够节省计算机的内存空间。比如整数型运算就显然不需要开辟适合小数或字符运算的内存空间。
在c语言中,按照取值的不同,数据类型可以分为两类:
1、原子类型:是不可以再分的基本类型,包括整型、实型和字符型。
2、结构类型:是由若干个类型组合而成,是可以在分解的。例如,整型数组是由若干个整形数据组成的。
抽象是指取出事物具有的普遍性的本质。他抽象出本质而忽略非本质的细节,是对具体事物的一个概括。
抽象数据类型
我们对已有的数据类型进行抽象,就有了抽象数据类型。
抽象数据类型(Abstract Data Type,ADT):是指一个数学模型及定义在该模型上的一组操作。抽象数据类型仅取决于它的逻辑特性,而与物理特性无关。
抽象数据类型不仅指已有的数据类型,还可以是程序设计者自己定义的数据类型。比如我们可以把成对出现的数据定义为Point类型。当然,定义一个数据类型不仅仅是定义它的数据元素,还要定义一组在该类型上的操作。
事实上,抽象数据类型体现了程序设计中问题分解、抽象和隐藏的特性。抽象数据类型把现实中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能够处理的数据模型,并把每个功能模块作为一个独立的单元,从而使得具体的实现过程隐藏起来。
抽象数据类型的标准格式
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
初始条件
操作结果描述
操作2
......
操作n
......
endADT