mirror of
https://github.com/142vip/408CSFamily.git
synced 2026-04-05 11:38:27 +08:00
feat: 408各科导航目录梳理,修改跳转链
This commit is contained in:
217
README.md
217
README.md
@@ -1,4 +1,3 @@
|
||||
|
||||
<div align="center">
|
||||
<p>
|
||||
<img alt="408Logo图片" width="240" src="https://cdn.statically.io/gh/142vip/cdn_service@main/doc_book/408/408_logo.png" style="text-align: center;">
|
||||
@@ -109,24 +108,23 @@
|
||||
|
||||
## 大纲目录(善用Ctrl+F)
|
||||
|
||||
**注意:没有链接的,可以在仓库找找,只是选择性进行博客和公众号发表**
|
||||
**注意:没有链接的,可以在仓库找找,只是选择性进行博客和公众号发表**
|
||||
|
||||
### 数据结构
|
||||
|
||||
> 参考资料:
|
||||
>
|
||||
> 1. 《数据结构》 .
|
||||
> 2. 《大话数据结构》.
|
||||
> 3. 《数据结构与算法景点问题解析》 第二版 Narasimha Karumanchi著.
|
||||
> 4. 《计算机网络-王道考研》 2019 王道论坛著.
|
||||
> 参考资料
|
||||
> - 《数据结构》 .
|
||||
> - 《大话数据结构》.
|
||||
> - 《数据结构与算法景点问题解析》 第二版 Narasimha Karumanchi著.
|
||||
> - 《计算机网络-王道考研》 2019 王道论坛著.
|
||||
|
||||
#### [基础入门](./manuscripts/数据结构/基础入门/readme.md)
|
||||
#### 基础入门
|
||||
|
||||
- [基础概念](https://mp.weixin.qq.com/s/M8MOCVnbVxQ3GRuxRaEKIg)
|
||||
- [数据结构三要素](https://mp.weixin.qq.com/s/7sCoHDFtI-Qp0wBcvMH6kQ)
|
||||
- [算法与算法评价](https://mp.weixin.qq.com/s/58fBAwoyg2Ali-HqOJ6t9g)
|
||||
|
||||
#### [线性表](./manuscripts/数据结构/线性表/readme.md)
|
||||
#### 线性表
|
||||
|
||||
- [基础概念和基本操作](https://mp.weixin.qq.com/s/3e5LX9HbnjfT980zV3veXA)
|
||||
- [线性表的顺序表示](https://mp.weixin.qq.com/s/gaXmF3tqZxxFXhhDyPZv-A)
|
||||
@@ -139,118 +137,110 @@
|
||||
- [零碎知识补充](https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485549&idx=2&sn=5282cd006b6c33e4bfe992298602e053&chksm=fcdfb1e1cba838f743a335bad530cf415eef57a417b807257d8ed6983047c2d57d5552b34cb0&token=1697862929&lang=zh_CN#rd)
|
||||
|
||||
|
||||
#### [栈和队列](Readme.md)
|
||||
#### 栈
|
||||
|
||||
- [栈的基本概念和基本操作](1.栈的基本概念和基本操作.md)
|
||||
- [栈的顺序存储结构](2.栈的顺序存储结构.md)
|
||||
- [栈的链式存储结构](3.栈链式存储结构.md)
|
||||
- [队列的基本概念和基础操作](4.队列的基本概念和基础操作.md)
|
||||
- [队列的顺序存储](5.队列的顺序存储结构.md)
|
||||
- [队列的链式存储](6.队列的链式存储结构.md)
|
||||
- [栈和队列的应用](栈和队列的应用.md)
|
||||
- [特殊矩阵的压缩存储](8.特殊矩阵的压缩存储.md)
|
||||
- 基本概念和操作
|
||||
- 顺序存储结构
|
||||
- 链式存储结构
|
||||
|
||||
#### 队列
|
||||
|
||||
- 基本概念和操作
|
||||
- 顺序存储结构
|
||||
- 链式存储结构
|
||||
|
||||
#### 串
|
||||
|
||||
- 基本概念
|
||||
- 简单的模式匹配
|
||||
- KMP算法
|
||||
|
||||
#### 树与二叉树
|
||||
|
||||
- 树
|
||||
- 定义
|
||||
- 术语
|
||||
- 性质
|
||||
- 基本概念
|
||||
- 二叉树
|
||||
- 定义和特性
|
||||
- 存储结构
|
||||
- 二叉树遍历
|
||||
- 线索二叉树
|
||||
- 二叉树遍历
|
||||
- 线索二叉树
|
||||
- 树和森林
|
||||
- 存储结构
|
||||
- 树、森林与二叉树转换
|
||||
- 遍历
|
||||
- 并查集应用
|
||||
- 树的应用
|
||||
- 二叉排序树
|
||||
- 平衡二叉树
|
||||
- 哈夫曼树
|
||||
- 哈夫曼编码
|
||||
|
||||
|
||||
#### 图论
|
||||
|
||||
- 基本概念
|
||||
- 图的存储
|
||||
- 图的遍历
|
||||
- 图的应用
|
||||
|
||||
|
||||
#### 查找
|
||||
|
||||
- 基本概念
|
||||
- 顺序查找
|
||||
- 折半查找
|
||||
- B树和B+树
|
||||
- 散列表
|
||||
|
||||
#### 排序
|
||||
|
||||
- 排序的基础概念
|
||||
- 直接排序
|
||||
- 交换排序之冒泡排序
|
||||
- 交换排序之快速排序
|
||||
- 基本概念
|
||||
- 插入排序
|
||||
- 交换排序
|
||||
- 选择排序
|
||||
- 归并排序
|
||||
- 基数排序
|
||||
- 内部排序算法的比较和应用
|
||||
- 外部排序的基本概念
|
||||
- 外部排序方法整理
|
||||
|
||||
|
||||
|
||||
|
||||
### 计算机网络
|
||||
|
||||
> 参考资料:
|
||||
>
|
||||
> 1. 《计算机网络》 第七版 谢希仁著.
|
||||
> 2. 《计算机网络-王道考研》 2019 王道论坛.
|
||||
|
||||
|
||||
|
||||
- [第一章:绪论]()
|
||||
- [第二章:物理层]()
|
||||
- [第三章:数据链路层]()
|
||||
- [第四章:网络层]()
|
||||
- [第五章:运输层]()
|
||||
- [第六章:应用层]()
|
||||
- [第七章:网络安全]()
|
||||
- [第八章:互联网上的音频/视频服务]()
|
||||
- [第九章:无线网络和移动网络]()
|
||||
|
||||
- 外部排序
|
||||
|
||||
|
||||
### 计算机操作系统
|
||||
|
||||
> 参考资料:
|
||||
>
|
||||
> 1. 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
|
||||
> 2. 《操作系统-王道考研》 2019 王道论坛
|
||||
> 参考资料
|
||||
> - 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
|
||||
> - 《操作系统-王道考研》 2019 王道论坛
|
||||
|
||||
#### 概述
|
||||
#### 系统概述
|
||||
|
||||
- 引论
|
||||
- 发展和分类
|
||||
- 运行环境
|
||||
- 体系结构
|
||||
|
||||
#### 进程管理
|
||||
|
||||
|
||||
- 进程和线程
|
||||
- 处理机调度
|
||||
- 进程同步
|
||||
- 死锁
|
||||
|
||||
|
||||
#### 内存管理
|
||||
|
||||
- 引论
|
||||
- 虚拟内存
|
||||
- 一些总结
|
||||
|
||||
#### 文件管理
|
||||
|
||||
- 基本概念
|
||||
- 文件系统
|
||||
- 磁盘管理
|
||||
- 一些总结
|
||||
|
||||
#### I/O管理
|
||||
|
||||
- 第一章:操作系统引论
|
||||
- 第二章:进程的描述与控制
|
||||
- 第三章:处理机调度与死锁
|
||||
- 第四章:存储器管理
|
||||
- 第五章:虚拟存储器
|
||||
- 第六章:虚拟存储器
|
||||
- 第七章:文件管理
|
||||
- 第八章:磁盘存储器的管理
|
||||
- 第九章:操作系统接口
|
||||
- 第十章:多处理机操作系统
|
||||
- 第十一章:多媒体操作系统
|
||||
- 第十二章:保护与安全
|
||||
#### 输入、输出管理
|
||||
|
||||
- 基本概述
|
||||
- 核心子系统
|
||||
- 高速缓存和缓冲区
|
||||
- 一些总结
|
||||
|
||||
|
||||
### 计算机组成原理
|
||||
|
||||
> 参考资料:
|
||||
> 1. 《计算机组成原理》 第二版 唐朔飞
|
||||
> 2. 《计算机组成原理-王道考研》 2019 王道论坛
|
||||
> 参考资料
|
||||
> - 《计算机组成原理》 第二版 唐朔飞
|
||||
> - 《计算机组成原理-王道考研》 2019 王道论坛
|
||||
|
||||
|
||||
#### 概述
|
||||
@@ -270,6 +260,61 @@
|
||||
#### 输入输出系统
|
||||
|
||||
|
||||
### 计算机网络
|
||||
|
||||
> 参考资料
|
||||
> - 《计算机网络-第七版》 谢希仁著.
|
||||
> - 《计算机网络-王道考研》 2019 王道论坛.
|
||||
|
||||
|
||||
#### 体系机构
|
||||
|
||||
- 基本介绍
|
||||
- 体系结构与参考模型
|
||||
|
||||
|
||||
#### 物理层
|
||||
|
||||
- 通信基础
|
||||
- 传输介质
|
||||
- 物理层设备
|
||||
|
||||
#### 数据链路层
|
||||
|
||||
- 基本功能
|
||||
- 组帧
|
||||
- 差错控制
|
||||
- 流量控制&可靠传输
|
||||
- 介质访问控制
|
||||
- 局域网
|
||||
- 广域网
|
||||
- 通信设备
|
||||
|
||||
#### 网络层
|
||||
|
||||
- 基本功能
|
||||
- 路由算法
|
||||
- 路由协议
|
||||
- IPV4
|
||||
- IPV6
|
||||
- IP组播&移动IP
|
||||
- 网络层设备
|
||||
|
||||
#### 传输层
|
||||
|
||||
- 提供的服务
|
||||
- UDP协议
|
||||
- TCP协议
|
||||
|
||||
|
||||
#### 应用层
|
||||
|
||||
- 应用模型
|
||||
- DNS
|
||||
- FTP协议
|
||||
- 电子邮件
|
||||
- HTTP协议
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -35,6 +35,9 @@ export default defineUserConfig({
|
||||
})();`
|
||||
]
|
||||
],
|
||||
// 配置永久链接,参考:https://v2.vuepress.vuejs.org/zh/reference/frontmatter.html#permalink
|
||||
// permalink: "/:year/:month/:day/:slug",
|
||||
// permalinkPattern: `:slug.html`,
|
||||
markdown: {
|
||||
// todo 引入代码文件时的路径替换
|
||||
importCode: {
|
||||
|
||||
@@ -6,10 +6,11 @@ export const navbar = [
|
||||
text: '首页',
|
||||
link: '/'
|
||||
},
|
||||
{
|
||||
text: "数据结构",
|
||||
link: "/manuscripts/ds"
|
||||
},
|
||||
// {
|
||||
// text: "数据结构",
|
||||
// link: "/manuscripts/ds"
|
||||
// },
|
||||
"/manuscripts/ds",
|
||||
{
|
||||
text: "操作系统",
|
||||
link: "/manuscripts/os"
|
||||
|
||||
@@ -14,21 +14,21 @@ export default {
|
||||
// HelloWorld: path.resolve(__dirname, '../components/HelloWorld.vue')
|
||||
// }
|
||||
}),
|
||||
searchProPlugin({
|
||||
// 索引全部内容
|
||||
indexContent: true,
|
||||
// 为分类和标签添加索引
|
||||
customFields: [
|
||||
{
|
||||
getter: (page: any) => page.frontmatter.category,
|
||||
formatter: "分类:$content",
|
||||
},
|
||||
{
|
||||
getter: (page) => page.frontmatter.tag,
|
||||
formatter: "标签:$content",
|
||||
},
|
||||
],
|
||||
}),
|
||||
// searchProPlugin({
|
||||
// // 索引全部内容
|
||||
// indexContent: true,
|
||||
// // 为分类和标签添加索引
|
||||
// customFields: [
|
||||
// {
|
||||
// getter: (page: any) => page.frontmatter.category,
|
||||
// formatter: "分类:$content",
|
||||
// },
|
||||
// {
|
||||
// getter: (page) => page.frontmatter.tag,
|
||||
// formatter: "标签:$content",
|
||||
// },
|
||||
// ],
|
||||
// }),
|
||||
// // md文档增强
|
||||
// mdEnhancePlugin({
|
||||
// // 文件导入
|
||||
|
||||
@@ -1,10 +1,65 @@
|
||||
|
||||
# 计算机网络
|
||||
|
||||
```mindmap
|
||||
root(计算机网络)
|
||||
体系机构
|
||||
物理层
|
||||
数据链路层
|
||||
网络层
|
||||
传输层
|
||||
应用层
|
||||
```
|
||||
|
||||
### 体系结构
|
||||
### 物理层
|
||||
### 数据链路层
|
||||
### 网络层
|
||||
### 传输层
|
||||
### 应用层
|
||||
## 体系机构
|
||||
|
||||
- 基本介绍
|
||||
- 体系结构与参考模型
|
||||
|
||||
|
||||
## 物理层
|
||||
|
||||
- 通信基础
|
||||
- 传输介质
|
||||
- 物理层设备
|
||||
|
||||
## 数据链路层
|
||||
|
||||
- 基本功能
|
||||
- 组帧
|
||||
- 差错控制
|
||||
- 流量控制&可靠传输
|
||||
- 介质访问控制
|
||||
- 局域网
|
||||
- 广域网
|
||||
- 通信设备
|
||||
|
||||
## 网络层
|
||||
|
||||
- 基本功能
|
||||
- 路由算法
|
||||
- 路由协议
|
||||
- IPV4
|
||||
- IPV6
|
||||
- IP组播&移动IP
|
||||
- 网络层设备
|
||||
|
||||
## 传输层
|
||||
|
||||
- 提供的服务
|
||||
- UDP协议
|
||||
- TCP协议
|
||||
|
||||
|
||||
## 应用层
|
||||
|
||||
- 应用模型
|
||||
- DNS
|
||||
- FTP协议
|
||||
- 电子邮件
|
||||
- HTTP协议
|
||||
|
||||
## 参考资料
|
||||
|
||||
-《计算机网络-第七版》谢希仁著.
|
||||
-《计算机网络-王道考研》2019 王道论坛.
|
||||
@@ -42,36 +42,43 @@ export const dsSidebar = [
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '栈和队列',
|
||||
text: '栈',
|
||||
prefix: '栈和队列',
|
||||
collapsible: false,
|
||||
children: [
|
||||
{
|
||||
text: '栈-基本概念和操作',
|
||||
text: '基本概念和操作',
|
||||
link: '1.栈的基本概念和基本操作.md'
|
||||
},
|
||||
{
|
||||
text: '栈-顺序存储结构',
|
||||
text: '顺序存储结构',
|
||||
link: '2.栈的顺序存储结构.md'
|
||||
},
|
||||
{
|
||||
text: '栈-链式存储结构',
|
||||
text: '链式存储结构',
|
||||
link: '3.栈的链式存储结构.md'
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '队列',
|
||||
prefix: '栈和队列',
|
||||
collapsible: false,
|
||||
children: [
|
||||
{
|
||||
text: '队列-基本概念和操作',
|
||||
text: '基本概念和操作',
|
||||
link: '4.队列的基本概念和操作.md'
|
||||
}, {
|
||||
text: '队列-顺序存储结构',
|
||||
text: '顺序存储结构',
|
||||
link: '5.队列的顺序存储结构.md'
|
||||
},
|
||||
{
|
||||
text: '队列-链式存储结构',
|
||||
text: '链式存储结构',
|
||||
link: '6.队列的链式存储结构.md'
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '7.总结.md'
|
||||
text: '栈VS队列补充',
|
||||
link: '7.栈VS队列补充.md'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# 数据结构
|
||||
|
||||
```mindmap
|
||||
root(数据结构)
|
||||
基础入门
|
||||
线性表
|
||||
栈和队列
|
||||
队列
|
||||
串
|
||||
树与二叉树
|
||||
图论
|
||||
查找
|
||||
排序
|
||||
```
|
||||
|
||||
|
||||
## 基础入门
|
||||
|
||||
- [x] 基本概念
|
||||
@@ -14,7 +28,7 @@
|
||||
- [x] 链式表示
|
||||
- [x] 一些总结
|
||||
|
||||
## 栈和队列
|
||||
## 栈
|
||||
|
||||
- [x] 基本概念和操作
|
||||
- [x] 顺序存储结构
|
||||
@@ -29,12 +43,55 @@
|
||||
- [x] 一些总结
|
||||
|
||||
|
||||
## 串
|
||||
|
||||
- 基本概念
|
||||
- 简单的模式匹配
|
||||
- KMP算法
|
||||
|
||||
## 树与二叉树
|
||||
|
||||
- 基本概念
|
||||
- 二叉树
|
||||
- 二叉树遍历
|
||||
- 线索二叉树
|
||||
- 树和森林
|
||||
- 树的应用
|
||||
|
||||
|
||||
## 参考资料:
|
||||
## 图论
|
||||
|
||||
- 《数据结构》. 严蔚敏著
|
||||
- 《数据结构-王道考研》. 2019 王道论坛
|
||||
- 基本概念
|
||||
- 图的存储
|
||||
- 图的遍历
|
||||
- 图的应用
|
||||
|
||||
|
||||
## 查找
|
||||
|
||||
- 基本概念
|
||||
- 顺序查找
|
||||
- 折半查找
|
||||
- B树和B+树
|
||||
- 散列表
|
||||
|
||||
## 排序
|
||||
|
||||
- 基本概念
|
||||
- 插入排序
|
||||
- 交换排序
|
||||
- 选择排序
|
||||
- 归并排序
|
||||
- 基数排序
|
||||
- 外部排序
|
||||
|
||||
|
||||
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 《数据结构》严蔚敏著.
|
||||
- 《数据结构-王道考研》2019 王道论坛.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
---
|
||||
permalink: /test
|
||||
---
|
||||
# 基本概念和基本操作
|
||||
|
||||
## 基本概念
|
||||
|
||||
`栈`: 只允许在一端进行插入或者删除操作的**线性表**,`后进先出的线性表`。
|
||||
|
||||
|
||||
@@ -36,7 +41,7 @@
|
||||
可以得出结论:栈是后进先出(先进后出),即:LIFO(Last In First Out),也可以叫**后进先出的线性表**
|
||||
|
||||
|
||||
## 栈的基本操作
|
||||
## 基本操作
|
||||
|
||||
|
||||
- `InitStack(&S)`: 初始化一个空栈`S`,栈顶指针初始化为-1
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
> 指针指向栈顶(top)主要是因为栈在线性表的一端操作,操作的那端就是栈顶,方便操作。
|
||||
|
||||
|
||||
### 顺序栈的存储类型
|
||||
## 顺序栈的存储类型
|
||||
|
||||
```cpp
|
||||
// 定义栈中元素的最大个数
|
||||
@@ -42,7 +42,7 @@ typedef struct{
|
||||
|
||||
|
||||
|
||||
### 顺序栈的基本运算
|
||||
## 顺序栈的基本运算
|
||||
|
||||
|
||||
- `InitStack(&S)`: 初始化一个空栈`S`,栈顶指针初始化为-1
|
||||
@@ -53,7 +53,7 @@ typedef struct{
|
||||
- `ClearStack(&S)`: 销毁栈,释放栈`S`占用的存储空间。
|
||||
|
||||
|
||||
#### 初始化
|
||||
### 初始化
|
||||
|
||||
|
||||
`InitStack(&S)`: 初始化一个空栈`S`,栈顶指针初始化为-1
|
||||
@@ -68,7 +68,7 @@ void InitStack(&S){
|
||||
```
|
||||
|
||||
|
||||
#### 栈空判断
|
||||
### 栈空判断
|
||||
|
||||
`StackEmpty(S)`: 判断一个栈是否为空,即:栈顶指针是否为-1,如果栈空则返回`true`,否则返回`false`
|
||||
|
||||
@@ -87,7 +87,7 @@ bool StackEmpty(S){
|
||||
```
|
||||
|
||||
|
||||
#### 进栈
|
||||
### 进栈
|
||||
|
||||
|
||||
`Push(&S,x)`: 进栈,若栈未满,`x`进栈操作,插入到栈内成为`新的栈顶元素`。
|
||||
@@ -113,7 +113,7 @@ bool Push(SqStack &S,ElemType x){
|
||||
- 进栈先移动栈顶指针+1,再操作入栈元素
|
||||
- `++i`是简写,先对变量i进行递加操作,再进行使用,即:先加后用
|
||||
|
||||
#### 出栈
|
||||
### 出栈
|
||||
|
||||
`Pop(&S,&x)`: 出栈,若栈非空,出栈操作,**弹出栈顶元素**,用指针`x`进行返回。
|
||||
|
||||
@@ -141,7 +141,7 @@ bool Pop(SqStack &S,ElemType &x){
|
||||
|
||||
|
||||
|
||||
#### 读(获取)栈顶元素
|
||||
### 读(获取)栈顶元素
|
||||
|
||||
`GetTop(S,&x)`: 读栈顶元素,若栈`S`非空,用x返回栈顶元素。
|
||||
|
||||
@@ -178,7 +178,7 @@ bool GetTop(SqStack S,ElemType &x){
|
||||
|
||||
|
||||
|
||||
### 共享栈
|
||||
## 共享栈
|
||||
|
||||
|
||||
`共享栈`:利用栈底位置相对不变的特性,可以让两个顺序栈共享一个`一维存储空间`,将两个栈的栈底分别设置在共享空间的两端,两个栈顶则向共享空间的中间延伸
|
||||
@@ -196,7 +196,7 @@ bool GetTop(SqStack S,ElemType &x){
|
||||
当且仅当两个栈的栈顶指针相邻(`top1-top0=1`),可以判断共享栈栈满
|
||||
|
||||
|
||||
#### 进栈
|
||||
### 进栈
|
||||
|
||||
|
||||
> 进栈:先移动指针,后进行赋值
|
||||
@@ -205,7 +205,7 @@ bool GetTop(SqStack S,ElemType &x){
|
||||
- 当0号栈进栈时,0号栈栈顶指针top0`先加1后赋值`
|
||||
- 当1号栈进栈时,0号栈栈顶指针top1`先减1后赋值`
|
||||
|
||||
#### 出栈
|
||||
### 出栈
|
||||
|
||||
> 出栈:先进行赋值,后移动指针
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
# 栈的链式存储结构
|
||||
|
||||
`链栈`: 采用链式存储的栈
|
||||
@@ -43,14 +42,14 @@ typedef struct LinkStack
|
||||
|
||||
```
|
||||
|
||||
### 优点
|
||||
优点:
|
||||
|
||||
- 便于多个栈共享存储空间
|
||||
- 不存在栈满上溢的情况,避免程序因溢出导致出错
|
||||
- 有效的提高存取效率
|
||||
|
||||
|
||||
### 进栈
|
||||
## 进栈
|
||||
|
||||
- 如果链栈不存在,则栈满,入栈操作失败,返回false;
|
||||
- 如果链栈存在,进行单链表的结点插入操作,移动指针,结点元素赋值,再将结点压入链栈中,移动链栈栈顶指针,最后链栈元素总数+1,返回true
|
||||
@@ -88,7 +87,7 @@ bool linkStackPushNode(LinkStack* linkStack,int e){
|
||||
}
|
||||
```
|
||||
|
||||
### 出栈
|
||||
## 出栈
|
||||
|
||||
- 如果链栈不存在,或者为空栈,则无法进行出栈操作,返回false
|
||||
- 如果链栈满足出栈条件,则通过栈顶指针获取到链栈栈底结点,将其数据域赋值给变量e,移动栈顶指针指向待出栈元素的后继结点,同时释放待出栈元素的内存空间,链栈元素总数-1 ,出栈成功,返回true.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 队列的基本概念和操作
|
||||
|
||||
|
||||
### 基本概念
|
||||
## 基本概念
|
||||
|
||||
`队列`:和栈一样,是一种操作受限制的线性表,只允许在表的一端进行插入,在表的另外一端进行删除,简称为`队`,常记作:`Queue`
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
|
||||
### 基础操作
|
||||
## 基础操作
|
||||
|
||||
|
||||
> 和栈一样,队列是操作受限的线性表,具有`先进先出`的特性,不是任何对线性表的操作都可以作为队列的操作。例如:无法随便读取到队列中间的某个数据,需要将前面的元素先出队
|
||||
|
||||
@@ -75,7 +75,7 @@ typedef struct {
|
||||
|
||||
|
||||
|
||||
### 循环队列
|
||||
## 循环队列
|
||||
|
||||
在上面的顺序队列中,当队满后进行出队列,由于顺序队列出队只在队首进行操作,并且只会修改队首指针,这时候就会出现队尾指针一直`Q.rear===MaxSize`情况,就如下:
|
||||
|
||||
@@ -124,10 +124,10 @@ typedef struct {
|
||||
|
||||
|
||||
|
||||
#### 如何区别队空还是队满
|
||||
### 如何区别队空还是队满
|
||||
|
||||
> 为了很好的区别循环队列的`队空`还是`队满`的情况,一般有三种处理方式.
|
||||
##### 牺牲一个单元来区分队空和队满
|
||||
#### 牺牲一个单元来区分队空和队满
|
||||
|
||||
这种方式**要求在入队时少用一个队列单元**,是一种比较普遍的做法。约定:
|
||||
|
||||
@@ -138,7 +138,7 @@ typedef struct {
|
||||
- 队列中元素个数:`(Q.rear+MaxSize-Q.front)%MaxSize`
|
||||
|
||||
|
||||
##### 类型中增设表示元素个数的数据成员
|
||||
#### 类型中增设表示元素个数的数据成员
|
||||
|
||||
这种就很直接了,直接和MaxSize去比较,就可以有:
|
||||
|
||||
@@ -148,7 +148,7 @@ typedef struct {
|
||||
|
||||
值的注意的是:在这个前提下,不论是`队空`还是`队满`,对会存在`Q.front=Q.rear`,这个可以通过前面方案解决。
|
||||
|
||||
##### 类型中增设tag数据成员标记
|
||||
#### 类型中增设tag数据成员标记
|
||||
|
||||
通过添加tag标记的方式,区分`队空`还是`队满`
|
||||
|
||||
@@ -194,13 +194,13 @@ int DeLoopQueue(SqQueue &Q, ElemType &x){
|
||||
}
|
||||
|
||||
```
|
||||
#####
|
||||
####
|
||||
|
||||
|
||||
### 代码实现
|
||||
## 代码实现
|
||||
|
||||
|
||||
#### 初始化空队列
|
||||
### 初始化空队列
|
||||
|
||||
|
||||
```cpp
|
||||
@@ -217,7 +217,7 @@ void InitLoopQueque(&Q){
|
||||
}
|
||||
```
|
||||
|
||||
#### 队列是否为空
|
||||
### 队列是否为空
|
||||
|
||||
```cpp
|
||||
/*
|
||||
@@ -242,7 +242,7 @@ bool isEmpatyLoopQueue(Q){
|
||||
```
|
||||
|
||||
|
||||
#### 入队操作
|
||||
### 入队操作
|
||||
|
||||
```cpp
|
||||
/*
|
||||
@@ -273,7 +273,7 @@ bool EnLoopQueue(SqQueue &Q, ElemType x){
|
||||
|
||||
```
|
||||
|
||||
#### 出队操作
|
||||
### 出队操作
|
||||
|
||||
|
||||
```cpp
|
||||
@@ -309,8 +309,7 @@ bool DeLoopQueue(SqQueue &Q, ElemType &x){
|
||||
|
||||
```
|
||||
|
||||
#### 获取队头元素
|
||||
|
||||
### 获取队头元素
|
||||
```cpp
|
||||
/*
|
||||
* @Description: 获取循环队列队头元素
|
||||
|
||||
@@ -59,11 +59,11 @@ typedef struct{
|
||||
- 不存在队满情况,也不会出现溢出情况;
|
||||
- 链式队列不会出现存储分配不合理、“溢出”的情况,内存动态分配
|
||||
|
||||
### 基本操作
|
||||
## 基本操作
|
||||
|
||||
> Tips: 基于带头结点链式队列的基础操作
|
||||
|
||||
#### 队列初始化
|
||||
### 队列初始化
|
||||
|
||||
```cpp
|
||||
|
||||
@@ -89,7 +89,7 @@ voide InitLinkQueue(LinkQueue &Q){
|
||||
|
||||
> 链式队列,本质是基于单链表的队列,那带头结点的链式队列,其实强调的也就是单链表要带头结点。队列的队首指针和队尾指针确定指向单表的队首和队尾就ok;初始化的时候,带头结点的单链表实质就只有一个头结点。而此时的链式队列,需要将队首指针和队尾指针指向单链表的头结点就行,好像到这里就完了。但是这样却忽视了单链表,只是注重的队列的front和rear指针。单链表的结点元素是分数据域和指针域的,即便是头结点的数据域可以不存什么(当然也常会存一些链表信息什么的),此处的`Q.front->next=NULL`就是用来处理链表的头结点的指针域的,让其指向下一个单链表元素为空,这里是非常需要处理的,非常细节!
|
||||
|
||||
#### 判断队空
|
||||
### 判断队空
|
||||
|
||||
```cpp
|
||||
|
||||
@@ -112,7 +112,7 @@ bool IsEmptyLinkQueue(LinkQueue Q){
|
||||
}
|
||||
```
|
||||
|
||||
#### 入队
|
||||
### 入队
|
||||
|
||||
|
||||
```cpp
|
||||
@@ -143,7 +143,7 @@ void EnLinkQueue(LinkQueue &Q, ElemType x){
|
||||
```
|
||||
|
||||
|
||||
#### 出队
|
||||
### 出队
|
||||
|
||||
```cpp
|
||||
|
||||
@@ -193,7 +193,7 @@ bool DeLinkQueue(LinkQueue &Q, ElemType &x){
|
||||
|
||||
|
||||
|
||||
### 双端队列
|
||||
## 双端队列
|
||||
|
||||
`双端队列`: 允许在两端都可以进行入队和出队操作的队列,元素的逻辑结构仍然是线性结构
|
||||
|
||||
@@ -216,7 +216,7 @@ bool DeLinkQueue(LinkQueue &Q, ElemType &x){
|
||||
|
||||
|
||||
|
||||
### 队列的补充
|
||||
## 知识补充
|
||||
|
||||
- 最适合用来链队的链表是:`带队首指针和队尾指针的非循环单链表`
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
|
||||
# 栈和队列总结
|
||||
# 栈VS队列补充
|
||||
|
||||
> Tips: 这里不会做过多文字介绍相关应用,具体需要自己看书、查资料揣摩
|
||||
|
||||
|
||||
```mindmap
|
||||
root(栈和队列总结)
|
||||
root(栈VS队列补充)
|
||||
栈的应用
|
||||
队列的应用
|
||||
数组的定义
|
||||
@@ -1,20 +1,16 @@
|
||||
# 操作系统
|
||||
|
||||
|
||||
|
||||
```mindmap
|
||||
操作系统
|
||||
系统概述
|
||||
|
||||
进程管理
|
||||
|
||||
进程管理
|
||||
|
||||
文件管理
|
||||
|
||||
I/O管理
|
||||
输入、输出管理
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 系统概述
|
||||
|
||||
- 引论
|
||||
@@ -24,16 +20,37 @@
|
||||
|
||||
## 进程管理
|
||||
|
||||
- 进程基本概念和特征
|
||||
- 进程的运行
|
||||
|
||||
- 进程和线程
|
||||
- 处理机调度
|
||||
- 进程同步
|
||||
- 死锁
|
||||
|
||||
|
||||
## 内存管理
|
||||
|
||||
- 引论
|
||||
- 虚拟内存
|
||||
- 一些总结
|
||||
|
||||
## 文件管理
|
||||
|
||||
## I/O管理
|
||||
- 基本概念
|
||||
- 文件系统
|
||||
- 磁盘管理
|
||||
- 一些总结
|
||||
|
||||
## 参考资料:
|
||||
|
||||
- 《计算机操作系统-第四版》. 汤小丹、梁红兵、汤子瀛著
|
||||
- 《操作系统-王道考研》. 2019 王道论坛
|
||||
## 输入、输出管理
|
||||
|
||||
- 基本概述
|
||||
- 核心子系统
|
||||
- 高速缓存和缓冲区
|
||||
- 一些总结
|
||||
|
||||
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
|
||||
- 《操作系统-王道考研》 2019 王道论坛
|
||||
|
||||
Reference in New Issue
Block a user