数据结构与算法整体理解 数据结构其实关注的是目前在计算机的约束下如何通过选择存储模型算法来实现特定问题的最大速度。定义抽象数据类型(Abstract Data Type):是一种抽象的数学模型。它定义了数据类型的操作接口(逻辑结构)和数据之间的关系。数据结构(Data Structure)是一种物理结构用来表示数据在计算机内存中的存储和组织方式。编程语言中的实现某一门编程语言(Java中的 LinkedList)实现了某种数据结构(数组)。理解我们可以观察到 抽象数据类型(ADT)相当于面向对象概念之中一个类的封装。我们重点突出一下ADT的组成部分。Anabstract data type(ADT) is a data type whoseproperties(domainandoperations) are specified independently of any implementation.ADT(D,S,P) 它的组成部分包括 D(data)数据对象表示的是这个数据结构由哪一些数据对象组成。一个结构体struct,或者一个基本数据类型都可以。 S(Structure/Relation),关系表示的是数据对象之间的关系例如线性关系树状关系等等。 P(Operations) 表示的是对于存在这个关系的数据对象的一系列操作。请注意我们之前的定义中提到了数据结构它的含义是在计算机系统里考虑对于某一种数据对象及其关系选择的存储实现比如线性实现链式实现散列实现等等。举个例子对于线性表{e_{1},e_{1},\dots,e_{n}}有单链表存储双链表存储连续存储数组等方式那么我们把单链表存储就称为数据结构。算法其实就是ADT的Operations的逻辑实现当然这个也是和语言无关类似于数据结构的概念例如树的层次遍历树的先序遍历等等。算法是特定的数据结构约束下的逻辑实现数据结构增加额外性质约束后可以换取某些操作的效率提升但通常也会带来其他代价。例如完全二叉树的顺序存储比一般二叉树的顺序存储节省空间但是选择了顺序存储其带来的插入和删除节点复杂度O(n)。参考链接https://juejin.cn/post/7467870476967297034 General Reference Material | ADTs and APIsGeneral Reference Material | ADTs and APIs