目录
抽象数据类型 (Abstract Data Type, ADT)
前言
本专栏文章代码皆用C语言语法标准实现,若后续高阶结构用到C++及其他语言语法会做出标注。
编译环境:
Visual Studio 2019
参考资料:
任课教师教学课件
严蔚敏-数据结构(C语言)
高职高专教材-数据结构与算法(C语言版)
由于算法的多样性,或许会有多处代码实现不完美或者错误,本文章仅供参考避免误人子弟!
1.什么是数据结构?
数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
数据结构是研究数据的逻辑结构、存储结构和运算方法的学科。
2.什么是算法?
算法:就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单 来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
想学好数据结构就要死磕代码!!!多写、多练。
3.基本概念和术语
数据结构(Data Structure)
相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带 “结构” 的数据元素的集合, “结构” 就是指数据元素之间存在的关系。
数据(Data)
客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element)
数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、记录等。数据元素用千完整地描述一个对象。后面学到的一个结点就是一个数据元素。
数据项(Data Item)
组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象 (Data Object)
性质相同的数据元素的集合,是数据的一个子集。
数据类型(Data Type)
高级程序设计语言中的一个基本概念,顺序存储结构可以借助程序设计语言的数组类型描述,链式存储结构可以借助指针类型描述,所以数据类型和数据结构的概念密切相关。
每一个数据都属于某种数据类型。类型明显或隐含地规定了数 据的取值范围、存储方式以及允许进行的运算。
抽象数据类型 (Abstract Data Type, ADT)
一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。 抽象数据类型的定义格式如下:
ADT 抽象数据类型名
{ 数据元素:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT抽象数据类型名
其实呢,用C语言的描述就是定义结构体,基本操作就是各种不同的对这个结构体进行操作的函数。
预定义常量及类型(代码风格简要说明):
这就是一个比较普遍但是大多数初学者都不理解的问题,学校的数据结构教材一般都是严蔚敏老师的书或者参考严蔚敏老师的教材代码,许多任课老师也是用的类似风格的代码,很多时候不理解书籍中的预定义常量导致初学困难,实际上在严蔚敏老师中的教材前言里面已经提到这些预定义但是很少有人注意到,这里就把一些预定义列举出来:
typedef int ElemType;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
教材中代码数据元素类型约定为ElemType。(用typedef)
#define OK 1
#define ERROR 0
#define OVERFLOW -2
Status是函数返回值类型, 其值是函数结果状态代码。
typedef int Status;
这是教材里面所用到的类型重命名,简单点,也就是说如果函数的返回类型是Status,那么那么他的返回值就简单的int型十进制数字,返回ok,也就是返回1,ERROR就是0,-2亦是如此。
内存的动态分配与释放:
使用 new 和 delete 动态分配和释放内存空间:
分配空间:指针变量 = new 数据类型;
释放空间:delete 指针变量;
像我们自己写代码的时候就要定义变量出来,或者用malloc函数申请内存出来,但是他把malloc申请空间,再把空间地址返回这些操作都省略了,打包成了一个new函数,教材中看到的new实际上就是申请了一块空间。delete这个函数c语言也是没有的,所以他这里的delete差不多就是调用free函数。