2026/7/18 23:41:52
网站建设
项目流程
Linux之父Linus曾说:“优秀的程序员更在意数据结构和彼此间的联系。”数据结构是软件的骨架,也是面试常客。本文速览十种常见数据结构。
- 链表:节点序列,每个节点存数据和指向下一个节点的指针。双向链表还有前驱指针。增删快,查找慢。
- 堆栈:后进先出(LIFO),像一叠书,只能从顶部操作。主要操作为push(入栈)、pop(出栈)、peek(查看栈顶)。
- 队列:先进先出(FIFO),像排队买单。入队(enqueue)在队尾添加,出队(dequeue)从队首移除。
- 集合:无序、无重复。支持并集、交集、差集和子集判断。
- Map(字典):键值对存储,键唯一,查找快速。支持增删改查。
- 哈希表:Map的一种,用散列函数将键映射到存储位置。理想情况下查找、插入、删除均为O(1),需处理碰撞。
- 二叉搜索树:每个节点最多两子,左子小于父节点,右子大于父节点。查找、插入、删除平均O(log n)。
- 前缀树(字典树):常用于单词存储和自动补全。每个节点存一个字母,并用布尔值标记单词结尾。
- 二叉堆:完全二叉树,最大堆父节点大于子节点,最小堆反之。适合优先队列,插入和删除O(log n)。
- 图:由节点(顶点)和边组成,分有向和无向。用邻接表或邻接矩阵表示,遍历常用广度优先(BFS)和深度优先(DFS)。
大多数高级语言内置了这些结构,但理解其实现,方能写出高性能代码。