数据结构学习记录

目录

前言

1. 数据结构的基本概念

1.1 数据元素、数据项:

1.2 数据对象

1.3 物理结构

1.4 数据结构的三要素

1.4 算法的基本概念​编辑

2 线性表和链表

2.1 线性表的定义和基本操作

2.2 顺序表

2.3 单链表

2.3.1 单链表的定义

2.3.2 单链表的使用

2.3.2.1 单链表的插入删除

2.3.2.2 单链表的查找

2.3.2.3 单链表的建立

2.3.3 双链表

2.3.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.3 栈的应用

3.3.1 栈在括号匹配中的应用

3.3.2 栈在表达式求值中的应用(上)

3.3.2 栈在表达式求值中的应用(下)

3.3.2 栈在递归中的应用

3.3.3 队列的应用

3.4 特殊矩阵的压缩存储

4 串

4.1 串的定义和基本操作

4.1.1 串的定义

4.1.2 串的存储结构

4.2 字符串匹配算法

4.2.1 朴素模式匹配算法

4.2.2 KMP算法

4.2.3 求Nextval数组

5 树

5.1 树的基本概念

5.1.1 树的定义

5.1.2 树的性质

5.2 二叉树

5.2.1 二叉树的定义和基本概念

5.2.2 二叉树的性质

5.2.3 二叉树的存储结构

5.3 二叉树的遍历

5.3.1 二叉树的先/中/后序遍历

5.3.2 二叉树的层序遍历

5.3.3 由遍历序列构成二叉树

5.3.4 线索二叉树的概念

5.3.5 二叉树的线索化

5.3.6 在线索二叉树找前后继

5.4 树和森林

5.4.1 树的存储结构

5.4.2 树和森林的遍历

5.5 哈夫曼树

5.5.1 哈夫曼树

5.5.2 并查集

5.5.3 并查集进一步优化


前言

数据结构的学习,仅做为学习记录,原视频为B站《王道计算机考研 数据结构》。

1. 数据结构的基本概念

1.1 数据元素、数据项:

数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。
一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。

1.2 数据对象

  数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
  数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

1.3 物理结构

  链式存储。逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。可以用指针表示下一个数据元素的存储地址。

  索引存储。在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项有的一般形式如关键字和地址。
  散列存储。根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储

1.4 数据结构的三要素

  • 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的
  • 数据的存储结构影响存储空间分配的方便程度
  • 数据的存储结构影响对数据运算的速度

1.4 算法的基本概念在这里插入图片描述

2 线性表和链表

2.1 线性表的定义和基本操作

CreateList(SqList &L,int n) 参数:顺序表L,顺序表长度n 功能:创建长度为的顺序表 时间复杂度:O(n)
InitList(SqList &L) 参数:顺序表L 功能:初始化 时间复杂度:O(1)
InsertList(SqList &L,int i,ElemType e) 参数:顺序表L,位置i,元素e 功能:位置i处插入元素e 时间复杂度:O(n)
ListDelete(SqList &L,int i) 参数:顺序表L,位置i 功能:删除位置i处元素 时间复杂度:O(n)
LocateElem(SqList L,ElemType e) 参数:顺序表L,元素e 功能:返回第一个等于e的元素的位置 时间复杂度:O(n)
Reverse(SqList &L) 参数:顺序表L 倒置函数 将原顺序表直接倒置
PrintList(SqList L) 参数:顺序表L 功能:遍历L,并输出
SplitSort(SqList &L) 参数:顺序表L 功能:分开奇偶,并分开排序 ClearList(SqList &L) 参数:顺序表L 功能:清空顺序表

2.2 顺序表

2.3 单链表

2.3.1 单链表的定义

2.3.2 单链表的使用

2.3.2.1 单链表的插入删除

2.3.2.2 单链表的查找

2.3.2.3 单链表的建立

2.3.3 双链表

2.3.4 循环链表

 

2.3.5 静态链表

 3 栈和队列

3.1 栈

3.1.1 栈的基本操作

3.1.2 栈的链式存储实现

3.2 队列

3.2.1 队列的基本概念

3.2.2 队列的顺序实现

3.2.3 队列的链式实现

3.2.4 双端队列

3.3 栈的应用

3.3.1 栈在括号匹配中的应用

3.3.2 栈在表达式求值中的应用(上)

3.3.2 栈在表达式求值中的应用(下)

3.3.2 栈在递归中的应用

3.3.3 队列的应用

 

3.4 特殊矩阵的压缩存储

 

4 串

4.1 串的定义和基本操作

4.1.1 串的定义

4.1.2 串的存储结构

4.2 字符串匹配算法

4.2.1 朴素模式匹配算法

4.2.2 KMP算法

4.2.3 求Nextval数组

5 树

5.1 树的基本概念

5.1.1 树的定义

5.1.2 树的性质


5.2 二叉树

5.2.1 二叉树的定义和基本概念

5.2.2 二叉树的性质

5.2.3 二叉树的存储结构

5.3 二叉树的遍历

5.3.1 二叉树的先/中/后序遍历

5.3.2 二叉树的层序遍历

5.3.3 由遍历序列构成二叉树

5.3.4 线索二叉树的概念

 

5.3.5 二叉树的线索化

5.3.6 在线索二叉树找前后继

5.4 树和森林

5.4.1 树的存储结构

5.4.2 树和森林的遍历

5.5 哈夫曼树

5.5.1 哈夫曼树

5.5.2 并查集

5.5.3 并查集进一步优化

6. 图

6.1 图的基本概念

6.2 图的存储

6.2.1 领接矩阵法

  • 30
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶舞狂雷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值