我们都知道程序=数据结构+算法。相信很多人都学过严蔚敏的数据结构的课程。作为一个码农,在这不管是3.7女神节,还是3.8妇女节。我觉得都有必要向这些教育界的老前辈致敬。今天我就梳理梳理,最经典的数据结构教材。

严蔚敏介绍(来自百度百科)

严蔚敏(1938.04—),女,汉族。清华大学计算机系教授,长期从事数据结构教学和教材建设,和吴伟民合作编著的《数据结构》曾获“第二届普通高等学校优秀教材全国特等奖”和“1996年度国家科学技术进步奖三等奖”。成为我国大中专院校学习“数据结构”使用最多的教材版本。

数据结构书籍封面:

我们来看看书籍目录:(大家看看自己还有多少还给老师了?)其实我们在面试中经常问的比较基础的东西就是这些东西。

第1章 结论
1.1 什么是数据结构
1.2 基本概念和术语
1.3 抽象数据类型的表示与实现
1.4 算法和算法分析
1.4.1 算法
1.4.2 算法设计的要求
1.4.3 算法效率的度量
1.4.4 算法的存储空间需求
第2章 线性表
2.1 线性表的类型定义
2.2 线性表的顺序表示和实现
2.3 线性表的链式表示和实现
2.3.1 线性链表
2.3.2 循环链表
2.3.3 双向链表
2.4 一元多项式的表示及相加
第3章 栈和队列
3.1 栈
3.1.1 抽象数据类型栈的定义
3.1.2 栈的表示和实现
3.2 栈的应用举例
3.2.1 数制转换
3.2.2 括号匹配的检验
3.2.3 行编辑程序
3.2.4 迷宫求解
3.2.5 表达式求值
3.3 栈与递归的实现
3.4 队列
3.4.1 抽象数据类型队列的定义
3.4.2 链队列--队列的链式表示和实现
3.4.3 循环队列--队列的顺序表示和实现
3.5 离散事件模拟
第4章 串
4.1 串类型的定义
4.2 串的表示和实现
4.2.1 定长顺序存储表示
4.2.2 堆分配存储表示
4.2.3 串的块链存储表示
4.3 串的模式匹配算法
4.3.1 求子串位置的定位函数Index(S,T,pos)
4.3.2 模式匹配的一种改进算法
4.4 串操作应用举例
4.4.1 文本编辑
4.4.2 建立词索引表
第5章 数组和广义表
5.1 数组的定义
5.2 数组的顺序表示和实现
5.3 矩阵的压缩存储
5.3.1 特殊矩阵
5.3.2 稀疏矩阵
5.4 广义表的定义
5.5 广义表的存储结构
5.6 m元多项式的表示
5.7 广义表的递归算法
5.7.1 求广义表的深度
5.7.2 复制广义表
5.7.3 建立广义表的存储结构
第6章 树和二叉树
6.1 树的定义和基本术语
6.2 二叉树
6.2.1 二叉树的定义
6.2.2 二叉树的性质
6.2.3 二叉树的存储结构
6.3 遍历二叉树和线索二叉树
6.3.1 遍历二叉树
6.3.2 线索二叉树
6.4 树和森林
6.4.1 树的存储结构
6.4.2 森林与二叉树的转换
6.4.3 树和森林的遍历
6.5 树与等价问题
6.6 赫夫曼树及其应用
6.6.1 最优二叉树(赫夫曼树)
6.6.2 赫夫曼编码
6.7 回溯法与树的遍历
6.8 树的计数
第7章 图
7.1 图的定义和术语
7.2 图的存储结构
7.2.1 数组表示法 [2]
7.2.2 邻接表
7.2.3 十字链表
7.2.4 邻接多重表
7.3 图的遍历
7.3.1 深度优先搜索
7.3.2 广度优先搜索
7.4 图的连通性问题
7.4.1 天向图的连通分量和生成树
7.4.2 有向图的强连通分量
7.4.3 最小生成树
7.4.4 关节点和重连通分量
7.5 有向无环图及其应用
7.5.1 拓扑排序
7.5.2 关键路径
7.6 最短路径
7.6.1 从某个源点到其余各项点的最短路径
7.6.2 每一对顶点之间的最短路径
第8章 动态存储管理
8.1 概述
8.2 可利用空间表及分配方法
8.3 边界标识法
8.3.1 可利用空间表的结构
8.3.2 分配算法
8.3.3 回收算法
8.4 伙伴系统
8.4.1 可利用空间表的结构
8.4.2 分配算法
8.4.3 回收算法
8.5 无用单元收集
8.6 存储紧缩
第9章 查找
9.1 静态查找表
9.1.1 顺序表的查找
9.1.2 有序表的查找
9.1.3 静态树表的查找
9.1.4 索引顺序表的查找
9.2 动态查找表
9.2.1 二叉排序树和平衡二叉树
9.2.2 B_树和B+树
9.2.3 键树
9.3 哈希表
9.3.1 什么是哈希表
9.3.2 哈希函数的构造方法
9.3.3 处理冲突的方法
9.3.4 哈希表的查找及其分析
第10章 内部排序
10.1 概述
10.2 插入排序
10.2.1 直接插入排序
10.2.2 其他插入排序
10.2.3 希尔排序
10.3 快速排序
10.4 选择排序
10.4.1 简单选择排序
10.4.2 树形选择排序
10.4.3 堆排序
10.5 归并排序
10.6 基数排序
10.6.1 多关键字的排序
10.6.2 链式基数排序
10.7 各种内部排序方法的比较讨论
第11章 外部排序
11.1 外存信息的存取
11.2 外部排序的方法
11.3 多路平衡归并的实现
11.4 置换-选择排序
11.5 最佳归并树
第12章 文件
12.1 有关文件的基本概念
12.2 顺序文件
12.3 索引文件
12.4 ISAM文件和VSAM文件
12.4.1 ISAM文件
12.4.2 VSAM文件
12.5 直接存取文件(散列文件)
12.6 多关键字文件
12.6.1 多重表文件
12.6.2 倒排文件 [2] 

重点学习数据结构:

一、线性表

线性表又称线性存储结构,是最简单的一种存储结构,专门用来存储逻辑关系为“一对一”的数据。

在一个数据集中,如果每个数据的左侧都有且仅有一个数据和它有关系,数据的右侧也有且仅有一个数据和它有关系,那么这些数据之间就是“一对一“的逻辑关系。

示例图:

线性表的存储:

在具有“一对一“逻辑关系的数据集中,每个个体习惯称为数据元素(简称元素)

二、 栈和队列

栈:

对于逻辑关系为“一对一”的数据,除了用顺序表链表存储外,还可以用栈结构存储。
栈是一种“特殊”的线性存储结构,它的特殊之处体现在以下两个地方:
1、元素进栈和出栈的操作只能从一端完成,另一端是封闭的。

2、栈中无论存数据还是取数据,都必须遵循“先进后出”的原则,即最先后栈的元素最先出栈。

队列:

队列用来存储逻辑关系为“一对一”的数据,是一种“特殊”的线性存储结构。

顺序表链表相比,队列的特殊性体现在以下两个方面:
1、元素只能从队列的一端进入,从另一端出去。

2、队列中各个元素的进出必须遵循“先进先出”的原则,即最先入队的元素必须最先出队。

三、串

对于由多个字符(≥ 0)组成的字符串(例如 "maoheyeren"),数据结构单独提供了一种存储结构,称为串结构。

字符串中的字符之间具有“一对一”的逻辑关系,所以严格意义上讲,串存储结构也属于线性存储结构。和顺序表链表队列这些线性存储结构不同的是,串存储结构专门用来存储字符串。

空串指的是未存储任何字符的串,整个串的长度为 0。

String s = "";

空格串指的是由多个(>0)空格字符组成的串结构,整个串的长度为包含空格字符的个数。

String s = "    ";

子串和主串

maoheyerenmao

四、数组和广义表

数组是对线性表的扩展,是一种“特殊”的线性存储结构,用来存储具有多种“一对一”逻辑关系的数据。

实际场景中,存储具有 N 种“一对一”逻辑关系的数据,通常会建立 N 维数组

一维数组和其它线性存储结构很类似,用来存储只有一种“一对一”逻辑关系的数据

一维数组:

二维数组用来存储包含两种“一对一”逻辑关系的数据。二维数组可以看作是存储一维数组的一维数组

二维数组:

五、树和二叉树

树结构通常用来存储逻辑关系为 "一对多" 的数据。

和链表类似,树存储结构中也将存储的各个元素称为 "结点"。

通常,我们将一棵树中几个结点构成的“小树”称为这棵树的“子树”。
一个结点拥有子树的个数,就称为该结点的度(Degree)。

从一棵树的树根开始,树根所在层为第一层,根的孩子结点所在的层为第二层,依次类推。

如果一棵树中,各个结点左子树和右子树的位置不能交换,那么这棵树就称为有序树。反之,如果树中结点的左、右子树可以互换,那么这棵树就是一棵无序树。

由 m(m >= 0)个互不相交的树组成的集合就称为森林。

空树指的是没有任何结点的树,连根结点都没有。

二叉树:

简单地理解,满足以下两个条件的树就是二叉树:

  1. 本身是有序树;
  2. 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;

六、图

图结构常用来存储逻辑关系为“多对多”的数据。比如说,一个学生可以同时选择多门课程,而一门课程可以同时被多名学生选择,学生和课程之间的逻辑关系就是“多对多”。

IT女神节(致敬中国IT界永远的女神严蔚敏-数据结构)相关推荐

  1. 女神节 | 那些奋斗在 IT 领域的“女神”们

    作者 | 刘丹 出品 | CSDN云计算(ID:CSDNcloud) 人工智能学习路线+实战训练 https://edu.csdn.net/topic/ai30?utm_source=csdn_bw ...

  2. 女神节 | 那些奋斗在IT领域的“女神”们

    戳蓝字"CSDN云计算"关注我们哦! 作者:刘丹 今天就是3月8日女神节,在这个日子里,我们的视线自然要转移在女性身上,来看看她 们的真实生活与丰富的人生经历. CSDN作为中国专 ...

  3. 女神节 | 那些奋斗在 IT 领域的“女神”们

    作者 | 刘丹 出品 | CSDN云计算(ID:CSDNcloud) 别惊讶!人工智能时代即将到来! https://edu.csdn.net/topic/ai30?utm_source=cxrs_b ...

  4. 致敬三八女神节,致敬IT女生

    前言 三八女神节是一个特别的节日,它是为了纪念所有的女性,表达对她们的尊重和关爱.在这个特别的节日里,我们想要致敬所有在IT领域中奋斗的女生,她们用自己的智慧和努力为这个世界带来了无限的可能. IT女 ...

  5. 女神节,CRMEB向女神致敬!官方特别设计免费ui小图标来了!

    世界上第一位程序猿竟然是一位美女(阿达·洛芙莱斯),她为了给程序设计"算法",制作了第一份程序设计流程图,作为计算机程序的创始人,她建立了循环和子程序等现代编程领域极为重要的概念. ...

  6. 女神节特辑 | 致敬程序媛,她们的人生究竟有多精彩?

    你知道吗?世界上第一位电脑程序设计师是名女性:Ada Lovelace (1815-1852) 是一位英国数学家兼作家,她是第一位主张计算机不只可以用来算数的人,也发表了第一段分析机用的演算法.因此, ...

  7. 女神节特辑 | 专访中国AI女神张晴晴从女学霸到女企业家的蜕变

    又是一年"女神节",如今女性为社会和家庭做出很大贡献,创造了很多社会公共价值,为此产生"女神力"一词,表达一种女性独有的力量. 特殊的日子里,编者采访了爱数智慧 ...

  8. 女神节快乐 | 用编程语言解密京东云程序媛!

    Happy Women's Day 今天是"3·8女神节",总有一群女神她们不爱爱马仕,却是"爱码士"!今天让我们用编程语言,带你解密京东云的爱码女神们. &q ...

  9. 女神节,来聊聊这几位神一般的“程序媛”

    导读:在一篇关于开发者的调查报告中显示,女性程序员在全球范围内只占7.6%,由此可见,"程序媛"在全球范围内都是稀缺物种了.而在中国男女程序员的比例也相差甚远,女程序员只占7.8% ...

最新文章

  1. gpio引脚介绍 树莓派3b_如何让LabVIEW程序运行在树莓派3B(此处有坑)
  2. ibatis查询结果返回数组_在ibatis中传递和返回自定义数组对象,在java中传递和返回oracle...
  3. (自已看的东西)java通过get和post直接提交
  4. java中flush 函数,Java DataOutputStream.flush()类型
  5. NVIDIA GPU 架构梳理
  6. Tomcat-部署多个项目(不同端口)
  7. 三层架构dao service 表示层 115721935
  8. 好的 Web 前端年薪会有多少?
  9. [转][Python小记] 通俗的理解闭包 闭包能帮我们做什么?
  10. Badboy+Jmeter进行性能测试
  11. jquery属性过滤选择器[attr=value]、[attr!=value]、[attr^=value]、[attr$=value]、[attr*=value]、[attr|=value]
  12. 现代文文言文转化器_初中语文丨7个文言文背诵技巧,不再为背书发愁,实用收藏...
  13. 不错的离线IP地址定位库
  14. office2013卸载工具
  15. 计算机一黑屏就显示当前账户已锁定,电脑黑屏用户已锁定账户怎么办?
  16. Spring整合JMS(二)——消息监听器
  17. JavaScript-最大值和最小值的方法,正无穷和负无穷的表示方法
  18. 【物联网控制技术题目】【根轨迹】
  19. 青春痘疤的治疗,微晶磨削 TCA FREXEL (转)
  20. 基于Transformer的翻译模型(英->中)

热门文章

  1. 单击“收件人”、“抄送”或“密件抄送”按钮时缺少
  2. 在本地计算机无法启动T3产品服务,本地计算机上的T3产品服务服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止...
  3. 深圳市财付通支付科技有限公司为什么扣我的钱
  4. 精琢机器人_马云投资的软银 Pepper 机器人到底可以干什么,值得购买么?
  5. 终于没能抵制住诱惑!
  6. 京东卖家如何妥善布局关键词?
  7. 【从0到1】组装深度学习台式机
  8. IOS快捷指令-工作日午休勿扰自动开启/关闭
  9. Python爬取抖音视频(没有水印的哟)
  10. matlab dir函数两级,Matlab dir函数