计算机基础知识(考研408):
计算机组成原理: https://blog.csdn.net/qq_1532145264/article/details/129696532
操作系统: https://blog.csdn.net/qq_1532145264/article/details/129696582
数据结构: https://blog.csdn.net/qq_1532145264/article/details/129696596
计算机网络 https://blog.csdn.net/qq_1532145264/article/details/129696607
数据结构可视化网站:Data Structure Visualizations:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
1、绪论
1.1、数据结构三要素
- 逻辑结构:
- 线性结构(数组、栈、队列)
- 非线性结构(集合、树形、图状)
- 存储结构(也称为物理结构):
- 顺序存储
- 链式存储
- 索引存储
- 散列存储(也称为哈希存储)
- 数据运算
1.2、算法效率的度量
算法效率的度量是通过时间复杂度和空间复杂度来描述的。
复杂度对比:
1.3、数据基本操作
增、删、改、查
添加数据要考虑 “判满”,删除数据要进行 “判空”
2、线性表
2.1、顺序表和链表的比较
- 顺序表既支持顺序查找,也支持随机查找;链表仅支持顺序查找。
- 在查找数据方面,顺序表的查找效率高。
- 在插入和删除上,链表更加方便。
- 顺序存储在静态存储分配情形下,一旦存储空间装满就不能扩充,若再加入新元素,则会出现内存溢出,因此需要预先分配足够大的存储空间。预先分配过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。动态存储分配虽然存储空间可以扩充,但需要移动大量元素,导致操作效率降低,而且若内存中没有更大块的连续存储空间,则会导致分配失败。链式存储的结点空间只在需要时申请分配,只要内存有空间就可以分配,操作灵活、高效。
3、栈、队列和数组
3.1、栈与队列
栈(Stack)是只允许在一端进行插入或删除操作的线性表。(特性:先进后出)
队列(Queue)是只允许在一端进行插入,在另一端删除的线性表。(特性:先进先出)
4、串
4、串的模式匹配
KMP算法
5、树与二叉树
5.1、基本概念
6、图
6.1、图的遍历
- 广度优先遍历(BFS)
- 深度优先遍历(DFS)
7、查找
7.1、常见的查找算法
- 顺序查找
- 折半查找
- 分块查找
7.2、红黑树的特点
- 每个结点或是红色,或是黑色的。
- 根结点是黑色的。
- 叶结点(虚构的外部结点、NULL结点)都是黑色的。
- 不存在两个相邻的红结点(即红结点的父结点和孩子结点均是黑色的)。
- 对每个结点,从该结点到任一叶结点的简单路径上,所含黑结点的数量相同。