Data Structure
数据结构
机考前的临时抱佛脚
栈
栈的修改与访问是按照后进先出的原则进行的,因此栈通常被称为是后进先出(last in first out)表,简称 LIFO 表。
STL
C++ 中的 STL 提供了一个容器 std::stack
,使用前需要引入 stack
头文件。
1 |
|
队列
队列(queue)是一种具有「先进入队列的元素一定先出队列」性质的表。由于该性质,队列通常也被称为先进先出(first in first out)表,简称 FIFO 表。
STL
C++ 在 STL 中提供了一个容器 std::queue
,使用前需要先引入 queue
头文件。
1 |
|
双端队列
双端队列是指一个可以在队首/队尾插入或删除元素的队列。相当于是栈与队列功能的结合。
STL
C++ 在 STL 中也提供了一个容器 std::deque
,使用前需要先引入 deque
头文件
哈希表
哈希表又称散列表,一种以「key-value」形式存储数据的数据结构。所谓以「key-value」形式存储数据,是指任意的键值 key 都唯一对应到内存中的某个位置。只需要输入查找的键值,就可以快速地找到其对应的 value。
1 |
|
并查集
并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。
并查集支持两种操作:
- 合并(Union):合并两个元素所属集合(合并对应的树)
- 查询(Find):查询某个元素所属集合(查询对应的树的根节点),这可以用于判断两个元素是否属于同一集合
1 |
|
堆
堆性质:父亲的权值不小于儿子的权值(大根堆)。同样的,我们可以定义小根堆。本文以大根堆为例。
1 |
|
线段树
线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。
线段树可以在 $O(logn)$ 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。
1 |
|
下周把数据结构这部分写完,还剩二叉树内容,只打算补充 Splay 和 Treap
Data Structure
https://shangzz2001.github.io/2024/08/13/Data-Structure/