大话数据结构读书笔记

一、绪论

1、数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,别输入给计算机处理的符号集合。

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。

数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。

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

总结:数据 > 数据对象 > 数据元素 > 数据项

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

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

物理结构:是指数据的逻辑结构在计算机中的存储形式。顺序存储结构(是把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的)、链式存储结构(是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的)。

二、算法

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

五个基本特性:输入、输出、有穷性、确定性和可行性。

2、算法时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,记作:T(n)=O(f(n)),大O记法。

常见的时间复杂度: 

算法的空间复杂度通过计算算法所需的存储空间实现。写代码时,可以用空间来换取时间。

三、线性表

 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

定义:

线性表的链式存储结构,使用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续也可以不连续。

定义:

对比:

总结:若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。

其它链表:静态链表、循环链表、双向链表。

四、栈与队列

1、栈

栈的顺序存储结构:类似于线性表的顺序存储。

栈的链式存储结构:栈顶放在链表的头部,在栈顶进行插入和删除。

栈的应用:四则运算表达式求值

后缀(逆波兰)表达式,所有的符号都是在要运算数字的后面出现,不需要括号。例如 9+(3-1)*3+10/2,后缀表示法应该是 9 3 1 - 3 * + 10 2 / +

我们平时所用的标准四则运算表达式叫做中缀表达式,中缀表达式到后缀表达式的转化:

计算器实现: 

将中缀表达式转化为后缀表达式(栈用来进出运算的符号)、将后缀表达式运算得出结果(栈用来进出运算的数字)

2、队列

队列的顺序存储结构:类似于线性表的书继续存储。

队列的链式存储结构:对头在链表的头部,入队在链表尾部插入,出队在链表头部删除。

循环队列中,约瑟夫环问题。在其它博客中已有阐述,此处省略。

五、串

定义:串是由零个或对各字符组成的有限序列,又名叫字符串。用双引号括起来。

计算机中的常用字符是使用标准的ASCII编码,由8位二进制数表示一个字符,总共可以表示256个字符。

串的顺序存储结构:用一组地址连续的存储单元来存储串中的字符序列。

栈的链式存储结构:每个结点中可存放一个字符,也可以存多个字符。

KMP模式匹配算法:

对于主串中进行搜索的i值不回溯,只关注字串中重复的字符对应的j值,其中子串中每个位置 j 值变化的定义:

然后根据不匹配处的j值移动字串到位置i处。 

六、树

1、二叉树

完全二叉树:

性质:

                   

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

线索二叉树:

把指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。在中序遍历中更新二叉树的前驱和后继。

七、图

定义:

有向图、无向图

存储结构:

1、邻接矩阵

2、邻接表

图的遍历:深度优先遍历、广度优先遍历

最小生成树:普利姆算法、克鲁斯卡尔算法

最短路径:迪杰斯特拉算法、弗洛伊德算法

拓扑排序:

AOV网、AOE网

关键路径:从源点到汇点具有最大长度的路径

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值