0%

数据结构绪论

绪论

数据结构基本概念

数据元素、数据项:数据元素包含数据项,举例:学生这个数据元素里会有姓名、学号等数据项

数据对象:数据对象是相同数据元素的集合

数据类型

原子类型:不可再分的最小数据类型

结构类型:可以再分

抽象数据类型:可以从java中接口理解,既要有属性,也要有方法

数据

记录各个数据元素的值

记录数据元素之间关系

数据结构三要素

逻辑结构:描述的是数据之间的逻辑关系,与怎么存储无关。

线性结构
一般线性表
栈和队列
数组
非线性结构
集合

存储结构:用计算机语言实现的逻辑结构

顺序存储:逻辑相邻,物理相邻
链式存储:逻辑相邻,物理不一定相邻(存储空间不一定相连,但存储的地址一定相邻)
微信图片_20231217100037
索引存储:通过索引表去查,经典的就是数组下标,就是索引表
散列存储:经典的就是哈希

数据运算

运算定义针对逻辑结构,可以理解为java的抽象类里面定义的抽象方法

运算实现针对存储结构,可以理解为java继承抽象类的子类中对抽象类里面定义的抽象方法的具体实现=

题型

判断一个结构是逻辑结构还是存储结构:

首先要熟悉基本数据结构的实现
判断逻辑结构就是看给出的结构抽不抽象,如果可以用多种存储方式实现就是抽象
判断存储结构就是看具不具体,如果指定了存储方式就是具体
微信图片_20231217094819
逻辑结构与存储结构之间关系:逻辑结构是独立的,但存储结构依赖于逻辑结构,是逻辑结构在计算机上的实现

微信图片_20231217095851 ## 算法评价 ### 时间复杂度 #### 计算规则 ##### 加法:一个算法的时间复杂度由其中最耗时的决定 ##### 乘法:嵌套的循环里时间复杂度相乘 #### 题型 ##### 嵌套循环的计算: ###### 1 外层循环计算了多少次,在多少次终止 ###### 2 内存循环每次计算了多少次 ###### 3 外层执行一次乘这次内层执行的次数后求和 微信图片_20231217101508

微信图片_20231217102736
递归的计算
微信图片_20231217103806
微信图片_20231217104339

空间复杂度