https://github.com/felixzc/datastruct-practice
数据结构练习(C++版)
https://github.com/felixzc/datastruct-practice
cpp
Last synced: over 1 year ago
JSON representation
数据结构练习(C++版)
- Host: GitHub
- URL: https://github.com/felixzc/datastruct-practice
- Owner: FelixZC
- License: mulanpsl-2.0
- Created: 2024-05-01T03:28:50.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-07T10:04:12.000Z (about 2 years ago)
- Last Synced: 2025-02-03T14:13:01.164Z (over 1 year ago)
- Topics: cpp
- Language: C++
- Homepage:
- Size: 77.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## 数据结构练习(C++版)
### 创建目的
1. 代码练习
2. 变更记录
### 说明
在工作中,尤其是软件开发领域,数据结构和算法的选择与应用对于提升代码效率、保证系统性能至关重要。以下是一些在实际工作中可能会频繁遇到或使用的数据结构和算法:
### 常见数据结构
1. **数组/列表**:基础数据结构,用于存储元素集合,支持随机访问。在处理索引操作频繁的场景中非常有用。
2. **栈**:后进先出(LIFO)的数据结构,常用于实现函数调用栈、撤销/重做功能、括号匹配等。
3. **队列**:先进先出(FIFO)的数据结构,用于任务调度、缓冲区管理等。双端队列(Deque)允许两端操作,增加了灵活性。
4. **链表**:非连续存储,每个节点包含数据和指向下一个节点的指针。适合频繁插入删除的场景,如实现LRU缓存。
5. **哈希表**:通过键值对存储数据,提供快速的查找、插入、删除操作。广泛应用于缓存、数据库索引等。
6. **树结构**:
- **二叉树**:每个节点最多有两个子节点,常用于实现查找、排序(如二叉查找树)。
- **红黑树**、**AVL树**:自平衡二叉查找树,保证查询效率,适用于需要动态插入删除且保持排序的数据集。
- **B树、B+树**:适用于磁盘存储和数据库索引,优化了大容量数据的访问效率。
- ** Trie树**:又称前缀树,用于高效存储和检索字符串,常用于自动补全、关键词搜索等。
7. **图**:用于表示对象之间的复杂关系,如社交网络、路由系统。图遍历(DFS、BFS)、最短路径算法(Dijkstra、Floyd-Warshall、A*)等在多种场景中应用广泛。
### 常用算法
1. **排序算法**:如冒泡排序、快速排序、归并排序、堆排序等,根据数据特性和性能要求选择合适的算法。
2. **查找算法**:二分查找、哈希查找、图的遍历等,适用于不同数据结构的高效检索。
3. **递归与分治**:递归常用于解决树和图的问题,分治算法如归并排序、快速排序,将大问题分解为小问题解决。
4. **动态规划**:解决具有重叠子问题和最优子结构的问题,如背包问题、最长公共子序列等。
5. **贪心算法**:每一步都做出局部最优选择,期望达到全局最优解,如活动安排问题、哈夫曼编码等。
6. **回溯算法**:用于解决约束满足问题,如八皇后问题、迷宫寻路等,通过试探性构造解来寻找所有可能解。
7. **堆算法**:维护一个近似完全二叉树结构,常用于优先队列、堆排序、Top-K问题等。