数据结构与算法基础

0.前言

基本内容(讲什么)

在这里插入图片描述

重要性

在这里插入图片描述
在这里插入图片描述

1. 绪论

1.1 数据结构的研究内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

1.2基本概念和术语

1.2.1数据、数据元素、数据项、数据对象

1.数据

在这里插入图片描述

2.数据元素

在这里插入图片描述

3.数据项

在这里插入图片描述

4.数据对象

在这里插入图片描述
在这里插入图片描述

1.2.2数据结构

在这里插入图片描述
在这里插入图片描述

1.数据结构的两个层次

在这里插入图片描述

逻辑结构的种类

在这里插入图片描述
在这里插入图片描述

存储结构的种类(掌握顺序和链式)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.3数据类型和抽象数据类型

在这里插入图片描述
在这里插入图片描述

1.数据类型

在这里插入图片描述

2.抽象数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.4小结

在这里插入图片描述

1.3抽象数据类型的表示与实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4算法和算法分析

1.4.1算法的定义

在这里插入图片描述

1.4.2算法的描述

在这里插入图片描述

1.4.3算法与程序

在这里插入图片描述

1.4.4算法特性

在这里插入图片描述

1.4.5算法设计要求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4.6算法效率

在这里插入图片描述

1.算法时间效率的度量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法渐进时间复杂度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法复杂度的比较

在这里插入图片描述

2.算法空间效率
渐进空间复杂度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4.7算法小结

在这里插入图片描述

2.线性表

知识回顾

在这里插入图片描述

2.1 线性表的定义和特点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 案例引入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 线性表的类型定义

在这里插入图片描述

基本操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 线性表的顺序存储结构与实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补充:元素类型说明

在这里插入图片描述

补充:数组的定义

在这里插入图片描述

补充:C语言的内存动态分配

在这里插入图片描述

补充:C++的内存动态分配

在这里插入图片描述

补充:C++中参数传递

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.1线性表的顺序存储表示

在这里插入图片描述
在这里插入图片描述

2.4.2线性表基本操作的实现

在这里插入图片描述
在这里插入图片描述

1.线性表L的初始化

在这里插入图片描述

2.销毁和清空线性表L

在这里插入图片描述
在这里插入图片描述

3.线性表L的长度和判断是否为空

在这里插入图片描述

4.顺序表的取值GetELem

在这里插入图片描述
在这里插入图片描述

5.顺序表的查找LocateELem

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.顺序表的插入ListInsert

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.顺序表的删除ListDelete

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.3顺序表小结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.5 线性表的链式存储结构与实现

1.知识回顾

在这里插入图片描述

2.链式存储结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.链式存储结构有关的术语

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.讨论

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.链表的特点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5.1单链表的定义和表示

在这里插入图片描述

单链表的存储结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5.2单链表基本操作的实现

在这里插入图片描述

1.补充单链表的几种常用简单算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.知识回顾

在这里插入图片描述
在这里插入图片描述

3.基本操作实现-取值GetELem

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.基本操作实现-查找LocateELem

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.基本操作实现-插入ListInsert

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.基本操作实现-删除ListDelete

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.时间效率分析

在这里插入图片描述

8.单链表的建立CreateList
头插法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

尾插法

在这里插入图片描述
在这里插入图片描述

2.5.3循环链表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.带尾指针的循环链表的合并

在这里插入图片描述
在这里插入图片描述

2.5.4双向链表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.双向链表的插入ListInsert

在这里插入图片描述
在这里插入图片描述

1.双向链表的删除ListDelete

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5.5单链表、循环链表和双向链表的时间效率比较

在这里插入图片描述

2.6 顺序表和链表的比较

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7 线性表的应用

在这里插入图片描述

2.7.1线性表的合并

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7.2有序表的合并

在这里插入图片描述

用顺序表实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用链表实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.8案例分析与实现

1.一元多项式

在这里插入图片描述
在这里插入图片描述

2.稀疏多项式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.图书管理系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 栈和队列

3.1栈和队列的定义和特点

在这里插入图片描述
在这里插入图片描述

1.栈

在这里插入图片描述
在这里插入图片描述

栈的相关概念

在这里插入图片描述
在这里插入图片描述

栈的示意图

在这里插入图片描述
在这里插入图片描述

栈与一般线性表的不同

在这里插入图片描述

2.队列

在这里插入图片描述
在这里插入图片描述

队列的相关概念

在这里插入图片描述

3.2案例引入

1.进制转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.括号匹配的检查

在这里插入图片描述
在这里插入图片描述

3.表达式求值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.舞伴问题

在这里插入图片描述

3.3栈的表示和操作的实现

3.3.1栈的抽象数据类型定义

在这里插入图片描述
在这里插入图片描述

3.3.2顺序栈的表示与实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.顺序栈的表示

在这里插入图片描述
在这里插入图片描述

2.顺序栈的实现
顺序栈判断栈是否为空

在这里插入图片描述

清空顺序栈

在这里插入图片描述

销毁顺序栈

在这里插入图片描述

顺序栈的入栈

在这里插入图片描述

顺序栈的出栈

在这里插入图片描述

3.3.3链栈的表示与实现

1.链栈的表示

在这里插入图片描述

2.链栈的实现
链栈的初始化

在这里插入图片描述

判断链栈是否为空

在这里插入图片描述

链栈的入栈

在这里插入图片描述

链栈的出栈

在这里插入图片描述

取栈顶元素

在这里插入图片描述

3.4栈与递归

1.递归的定义

在这里插入图片描述

2.以下三种情况常用到递归方法

在这里插入图片描述

递归定义的数学函数

在这里插入图片描述

具有递归特性的数据结构

在这里插入图片描述

可递归求解的问题

在这里插入图片描述

3.递归问题-用分治法求解

在这里插入图片描述
在这里插入图片描述

函数调用过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

递归的优缺点

在这里插入图片描述

尾递归->循环结构

在这里插入图片描述

单向递归->循环结构

在这里插入图片描述
在这里插入图片描述

4.借助栈来改写递归

在这里插入图片描述

3.5队列的表示和操作的实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5.1队列的抽象数据类型定义

在这里插入图片描述

3.5.2循环队列的顺序表示与实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.队列的初始化

在这里插入图片描述

2.队列的长度

在这里插入图片描述

2.循环队列的入队

在这里插入图片描述

3.循环队列的出队

在这里插入图片描述
在这里插入图片描述

4.取队头元素

在这里插入图片描述

3.5.3队列的链式表示与实现

在这里插入图片描述
在这里插入图片描述

1.链队列的初始化

在这里插入图片描述

2.销毁链队列

在这里插入图片描述

3.将元素e入队

在这里插入图片描述

4.链队列出队

在这里插入图片描述
在这里插入图片描述

4.求链队列的队头元素

在这里插入图片描述

4. 串、数组和广义表

4.1串的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2案例引入

在这里插入图片描述
在这里插入图片描述

4.3串的类型定义、存储结构及其运算

4.3.1串的类型定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3.2存储结构

1.顺序存储结构

在这里插入图片描述

2.链式存储结构

在这里插入图片描述
在这里插入图片描述

4.3.3串的模式匹配算法

在这里插入图片描述

1.BP算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.KMP算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.1数据的抽象数据类型定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.基本操作

在这里插入图片描述

4.4.2数组的顺序存储

在这里插入图片描述

1.一维数组

在这里插入图片描述

2.二维数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.三维数组

在这里插入图片描述
在这里插入图片描述

4.n维数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.3特殊矩阵的压缩存储

在这里插入图片描述
在这里插入图片描述

1.对称矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.三角矩阵

在这里插入图片描述

3.对角矩阵

在这里插入图片描述
在这里插入图片描述

4.稀疏矩阵存储

在这里插入图片描述

顺序存储结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十字链表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5广义表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

广义表的性质

在这里插入图片描述
在这里插入图片描述

广义表和线性表的区别

在这里插入图片描述

广义表的基本运算

在这里插入图片描述

4.6案例分析与实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.树和二叉树

5.1树和二叉树的定义

在这里插入图片描述
在这里插入图片描述

5.1.1树的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.2树的基本术语

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

树结构和线性结构的比较

在这里插入图片描述

5.1.3二叉树的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二叉树的五种基本形态

在这里插入图片描述

5.2案例引入

1.数据压缩问题

在这里插入图片描述

2.利用二叉树求解表达式的值

在这里插入图片描述

5.3树和二叉树的抽象数据类型定义

在这里插入图片描述

基本操作

在这里插入图片描述

5.4二叉树的性质和存储结构

5.4.1性质

1.性质1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.性质2

在这里插入图片描述
在这里插入图片描述

3.性质3

在这里插入图片描述
在这里插入图片描述

4.特殊形式的二叉树

在这里插入图片描述

满二叉树

在这里插入图片描述
在这里插入图片描述

完全二叉树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

性质4

在这里插入图片描述
在这里插入图片描述

性质5

在这里插入图片描述
在这里插入图片描述

5.4.2存储结构

在这里插入图片描述

1.顺序存储结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.链式存储结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.5遍历二叉树和线索二叉树

5.5.1遍历二叉树

在这里插入图片描述

1.遍历二叉树算法描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

先序遍历二叉树的操作定义

在这里插入图片描述

中序遍历二叉树的操作定义

在这里插入图片描述

后序遍历二叉树的操作定义

在这里插入图片描述

例题

在这里插入图片描述
在这里插入图片描述

2.根据遍历序列确定二叉树
例题:已知先序和中序序列求二叉树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例题:已知中序和后序序列求二叉树

在这里插入图片描述

3.遍的算法实现
先序遍历

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中序遍历

在这里插入图片描述
在这里插入图片描述

后序遍历

在这里插入图片描述
在这里插入图片描述

遍历算法分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.遍历二叉树的非递归算法

在这里插入图片描述
在这里插入图片描述

5.二叉树的层次遍历

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.二叉树遍历算法的应用

在这里插入图片描述
在这里插入图片描述

1.二叉树遍历算法的应用-复制二叉树

在这里插入图片描述
在这里插入图片描述

2.二叉树遍历算法的应用-计算二叉树的深度

在这里插入图片描述

3.二叉树遍历算法的应用-计算二叉树的结点总数

在这里插入图片描述

4.二叉树遍历算法的应用-计算二叉树的叶子结点数

在这里插入图片描述

5.5.2线索二叉树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.先序线索二叉树

在这里插入图片描述

2.中序线索二叉树

在这里插入图片描述

3.后序线索二叉树

在这里插入图片描述

练习

在这里插入图片描述
在这里插入图片描述

5.6树和森林

在这里插入图片描述

5.6.1树的存储结构

1.双亲表示法

在这里插入图片描述
在这里插入图片描述

2.孩子链表

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.孩子兄弟表示法

在这里插入图片描述
在这里插入图片描述

5.6.2树和二叉树的转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.6.3森林和二叉树的转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.6.4树和森林的遍历

1.树的遍历

在这里插入图片描述

2.森林的遍历

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.7哈夫曼树及其应用

5.7.1哈夫曼树的基本概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.7.2哈夫曼树的构造算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

哈夫曼树的构造算法的实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.7.3哈夫曼编码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.文件编码和解码-应用举例

在这里插入图片描述
在这里插入图片描述

编码

在这里插入图片描述

解码

在这里插入图片描述
在这里插入图片描述

6.图

回顾-数据的逻辑结构

在这里插入图片描述

6.1图的定义和基本术语

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值