数据结构笔记

读《大话数据结构》笔记。

1.数据结构概念

数据-数据元素(记录)-数据项

数据对象:性质相同的数据元素的集合,是数据的子集。

数据结构:相互之间存在一种或多种特定关系的数据元素的集合。

按照视点(?)的不同,数据结构分为逻辑结构物理结构

逻辑结构:数据对象中的数据元素的相互关系。逻辑结构分为集合结构、线性结构、树形结构、图形结构。

物理结构(也叫存储结构):数据的逻辑结构在计算机中的存储形式。数据元素的存储结构形式主要有两种:顺序存储链式存储

顺序存储结构:把数据元素存储在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。

链式存储结构:把数据元素存储在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系不能反映逻辑关系,需要用一个指针存放数据元素的地址。

逻辑结构是面向问题的,物理结构是面向计算机的,其目标是将数据及逻辑关系存储到计算机的内存当中。

数据类型:一组性质相同的值的集合及定义在此集合上的操作的总称。整型、浮点型、字符型……

抽象数据类型:一个数据模型以及定义在该数据模型上的一组操作。

2.算法

算法(描述解决问题的方法)是解决特定问题的求解步骤的描述,在计算中表现为指令的有限序列,并且每条指令都表示一个或多个操作。

算法的五个特性:输入、输出、有穷性、确定性、可行性。

算法设计要求:正确性、可读性(易理解)、健壮性、高效率、低存储。

算法效率度量方法:事后统计方法(弃用)、事前分析估算方法。

算法时间复杂度:

算法空间复杂度:通过计算算法的所需存储空间实现,S(n) = O(f(n)),其中n为问题规模,f(n)为语句关于n的所占存储空间的函数。

3.线性表

零个或多个数据元素的有限序列。排队的必须是相同类型的数据!

线性表的元素个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。

线性表的顺序存储结构链式存储结构

单链表、循环链表、双向链表;静态链表

4.栈与队列

是限定在表尾(栈顶)进行插入和删除操作的线性表。(后进先出,last in first out,LIFO结构)

队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表。(先进先出,first in first out,FIFO)

递归例子:斐波那契数列(Fibonacci)

递归函数:直接或间接调用自己的函数

栈用于四则运算表达式求值。1、将中缀表达式转换成后缀表达式。2、将后缀表达式进行运算得出结果。

循环队列

5.串

零个或多个字符组成的有限序列,也叫字符串。

串的比较:通过组成串的字符之间的编码来进行比较,而字符的编码是指字符在对应字符集中序号。

KMP

6.树

树是n(n >= 0)个结点的有限集。n=0时,称为空树。

根结点、内部结点、叶结点

子树

森林是m(m >=0)颗互不相交的树的集合。

二叉树特点:1、每个结点最多只有两颗子树;2、左子树、右子树顺序不能颠倒。3、即使某结点只有一个结点,也要区分是左子树还是右子树。

树的遍历:前序遍历、中序遍历、后序遍历、层序遍历

7.图

图是由顶点的非空有穷集合和顶点之间边的集合组成,表示为G(V,E),其中G表示为一个图,V是图G中的顶点的集合,E是图G中边的集合。

最小生成树

最短路径

拓扑排序,对一个有向图构造拓扑序列。

关键路径。路径上各个活动所持续的时间之和为路径长度,从源点到汇点具有最大长度的路径叫关键路径,在关键路径上的活动叫关键活动。只有缩短关键路径上的关键活动的时间,才能减少整个工期。

8.查找

根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。

查找表:需要被查的数据所在的集合,我们统称为查找表。由同一类型的数据元素构成的集合。

关键字、关键码

若关键字可以唯一地标识一个记录,则为主关键字。主关键字所在的数据项称为主关键码。

可以识别多个数据元素的关键字,为次关键字。

索引,为了加快查找速度而设计的一种数据结构。索引就是把一个关键字与它对应的记录相关联的过程。

9.排序

简单选择排序、直接插入排序、归并排序

冒泡排序、堆排序

希尔排序

快速排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值