研究数据的特性和数据之间存在的关系此即为数据结构。
1. 数据 数据不仅包括数值型信息,还包括非数值型数据,如:图像、声音、文字。 所谓的数据是对客观事物的符号表示,这些符号具备两个条件: (1)能输入到计算机中。 (2) 能被计算机程序处理。 对于非字符型数据可对其进行编码将其转变为字符型数据再进行处理。 2.数据元素 数据元素是数据的一个基本单位,通常作为一个整体进行考虑。如:整数5是整形数据的一个数据元素。 3.数据项 数据元素可以由若干项组成,这些项是构成数据元素的单位,即为数据项。 数据项可以是原子项,也可以是组合项。 4.数据对象 数据对象是性质相同的数据元素的集合,是数据的一个子集。 5.数据结构 数据元素之间的关系称为结构。 数据结构简而言之就是相互之间存在着某种逻辑关系的数据元素的集合。 总结 数据包含数据对象;数据对象包含数据元素;数据元素包含数据项。
数据结构主要研究的是在非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系;在此基础上进行数据对象的操作。 具体的结构分为以下四种: 1.集合结构; 2.线性结构; 3.树形结构; 4.图形结构;
1.4.1逻辑结构 通常所说的数据结构即指逻辑结构。 1.集合结构 数据对象中的数据元素间除了同属于一个集合外,无其他任何关系。 2.线性结构 数据对象中的数据元素之间存在一一对应的线性关系。 3.树形结构 数据对象中的数据元素之间存在一对多的层次关系,可以表示为1:n。 4.图形结构 也称网状结构,数据对象中的数据元素之间存在多对多的任意关系,可以表示为m:n。 注: 集合是数据元素之间极为松散的一种结构,因此用的少。 集合结构、树形结构、图形结构属于非线性结构。 数据的逻辑结构除了使用图来表示更多的还会使用二元组的形式表示,如(D,S),其中D是数据元素的集合,S是D上关系的集合。 (1,2)表示序偶<1,2>和<2,1>同时存在。 1.4.2存储结构 需要存储的内容包括:(1)“数据”的存储;(2)“关系”的存储。 常用的数据的存储方式有两种:(1)顺序存储;(2)链式存储。 1.顺序存储结构 把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。 相当于是一个数组,计算机在内存中找到了一段连续的空闲空间。 2.链式存储结构 把数据元素放在任意的存储单元中,逻辑上相邻的元素其物理位置可能相邻也可能不相邻,通过指针来表示。 每一个数据元素除了本身的数据之外还有一个指针一起存储。 注: 即使数据的逻辑结构相同,但若操作的种类和数目不同,则数据结构能起的作用也不同。
1.5.1数据类型 一个值的集合以及定义在这个值的集合上的一组操作的总称。 按照取值的不同分为两类:原子类型(整形、实型、字符型。。。)和结构类型(数组、文件)。 数据类型是在程序设计中已经实现了的数据结构。 1.5.2抽象数据类型 指一个数学模型以及定义在该模型上的一组操作。 1.数据抽象 强调的是其本质特征、所能够完成的功能、它与外部用户的接口。 2.数据封装 抽象化数据类型可用以下三元组表示:(D,S,P) D:数据对象;S:D上的关系;P:对D的基本操作。 基本操作通常包括:初始化、插入、删除、查找、遍历等。
1.6.1算法的五大特性 1.输入 2.输出 3.确定性 4.有限性 5.有效性 1.6.2算法的设计要求 (1)正确性 (2)可读性 (3)健壮性 (4)高效率和低存储量需求 1.6.3算法的时间复杂度和空间复杂度