ding0 2020-03-28
Data Structures + Algorithms = Programs
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合
集合结构,线性结构,树形结构,图结构。
顺序存储结构和链式存储结构.
数据结构在计算机专业课程体系中起到承上启下的作业,熟练使用数据结构可以使程序运行的更快更流畅
思维导图:
对特定问题求解步骤的一种描述,它是指令的特定序列,每一条指令表示一个或多个操作
有穷性,确定性,可行性,输入,输出。
自然语言,流程图,程序设计语言,伪代码。
正确性,可使用性,可读性,健壮性,时间效率高与存储量低
必须执行程序,且存在其他因素掩盖算法本质
算法执行时间=基本运算时间*运算次数
基本运算:被视为算术运算的一般是最深层循环内语句
算法的执行时间可由其基本运算的执行次数来计算
时间复杂度:记号"O",表示随问题规模n增大,算法执行时间的增长率和f(n)的增长率相同。
通常情况下,鉴于运算空间较为充足,常以算法的时间复杂度作为算法优劣的衡量指标
常数阶:O(1):基本运算次数与问题规模无关。注意:O(1)不代表1次运算
常用的算法时间复杂度的关系:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)
算法的渐进时间复杂度是指:随着问题规模的增大,算法执行时间的增长趋势
空间复杂度:算法在运行过程中临时占用的空间的度量,一般也是问题规模n的函数s(n)=O(g(n)).
算法的时间复杂度和空间复杂度相互影响,好的时间复杂度可能会导致占用较多的存储空间。
思维导图:
线性表是最简单,最常用的线性结构,线性结构是一个数据元素的有序关系
定义:具有相同特性的数据元素的一个有限序列
初始化InitList(&L),销毁DestroyList(&L),判断是否为空ListEmpty(L),输出DisList(L),返回L中元素的个数ListLength(L)
使用一块地址连续的存储空间,按照线性表中元素的逻辑顺序依次存放相应元素
逻辑上相邻以及物理地址相邻,实现随机存储。
初始化,销毁,获取元素,查找,插入,删除
线性表中的数据元素存放在一组地址任意的存储节点,节点之间用链进行连接
节点= 数据元素 + 指针
指向线性表的第一个元素,有时为了简化插入和删除操作,需要在第一个节点之前设置一个头节点
存储密度=数据所占空间/节点所占空间 (因此链表的存储密度不高,比起顺序表来说存储空间的利用率比较低)
初始化,销毁,判断是否为空表,输出,插入,删除,建立单链表:头插法和尾插法
思维导图:
是限制仅在线性表的一端进行插入和删除运算的线性表
LIFO:后进先出;具有线性关系
顺序存储结构和链式存储结构;
栈中元素和指示栈顶的标记
是限制仅在线性表的一端进行插入,另一端进行删除的线性表
FIFO:后进先出;具有线性关系
顺序存储结构和链式存储结构;
栈和队列都是操作受限制的线性表。
思维导图:
是由0个或者多个字符组成的有限序列,是数据元素为单个字符的特殊线性表
串仅仅处理字符类型,线性表处理任何数据类型。
线性表的基本操作中,大多以“单个元素”作为操作对象,而串大多以“串的整体“作为操作整体
在链式串中,基本操作的实现大多利用尾插法,建立返回的结果串
思维导图: