跳到正文数据结构
- 数组 (Array)
- 定义:一组相同类型的数据按一定顺序排列的集合。
- 常见操作:查找、插入、删除、排序。
- 应用:动态数组(如ArrayList)、矩阵操作等。
- 链表 (Linked List)
- 定义:由一系列节点组成的线性数据结构,每个节点包含数据和指向下一个节点的指针。
- 类型:单链表、双链表、循环链表。
- 常见操作:插入、删除、反转、查找。
- 应用:队列、栈、图的邻接表表示等。
- 栈 (Stack)
- 定义:一种后进先出(LIFO)的数据结构。
- 常见操作:入栈、出栈、查看栈顶元素。
- 应用:括号匹配、表达式求值、深度优先搜索等。
- 队列 (Queue)
- 定义:一种先进先出(FIFO)的数据结构。
- 类型:普通队列、双端队列、优先队列。
- 常见操作:入队、出队、查看队头元素。
- 应用:广度优先搜索、任务调度等。
- 哈希表 (Hash Table)
- 定义:通过哈希函数将键映射到值的数据结构。
- 常见操作:插入、删除、查找。
- 应用:快速查找、缓存、去重等。
- 树 (Tree)
- 定义:一种分层数据结构,由节点组成,每个节点有零个或多个子节点。
- 类型:二叉树、二叉搜索树、平衡树(如AVL树、红黑树)、堆(如二叉堆、斐波那契堆)。
- 常见操作:插入、删除、查找、遍历(前序、中序、后序、层序)。
- 应用:文件系统、数据库索引、优先队列等。
- 图 (Graph)
- 定义:由节点(顶点)和边组成的数据结构。
- 类型:有向图、无向图、加权图。
- 常见操作:遍历(深度优先搜索、广度优先搜索)、最短路径(Dijkstra算法、Bellman-Ford算法)、最小生成树(Kruskal算法、Prim算法)。
- 应用:社交网络、地图导航、网络路由等。
算法
- 排序算法 (Sorting Algorithms)
- 常见算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序。
- 应用:数据排序、优先级队列等。
- 搜索算法 (Search Algorithms)
- 常见算法:线性搜索、二分搜索、深度优先搜索、广度优先搜索。
- 应用:查找数据、图遍历等。
- 动态规划 (Dynamic Programming)
- 定义:通过将复杂问题分解为更小的子问题来解决问题的算法。
- 常见问题:背包问题、最长公共子序列、最长递增子序列、最短路径问题。
- 应用:优化问题、路径规划等。
- 贪心算法 (Greedy Algorithms)
- 定义:通过每一步都选择当前最优解来解决问题的算法。
- 常见问题:活动选择问题、背包问题、哈夫曼编码。
- 应用:优化问题、图算法等。
- 回溯算法 (Backtracking)
- 定义:通过尝试所有可能的解决方案来解决问题的算法。
- 常见问题:八皇后问题、数独、全排列、组合问题。
- 应用:组合优化、约束满足问题等。
- 分治算法 (Divide and Conquer)
- 定义:将问题分解为更小的子问题,分别解决后合并结果的算法。
- 常见问题:归并排序、快速排序、最大子数组问题。
- 应用:排序、矩阵乘法等。
- 图算法 (Graph Algorithms)
- 常见算法:Dijkstra算法、Bellman-Ford算法、Floyd-Warshall算法、Kruskal算法、Prim算法、拓扑排序、强连通分量。
- 应用:最短路径、最小生成树、图遍历等。
- 字符串算法 (String Algorithms)
- 常见算法:KMP算法、Rabin-Karp算法、Trie树、后缀数组、后缀树。
- 应用:字符串匹配、文本处理、压缩算法等。