常见的数据结构包括以下几种:
-
数组(Array):一组相同类型的元素,连续存储在内存中。数组的大小固定,支持通过索引快速访问元素。
-
链表(Linked List):
- 单链表:每个节点包含数据和指向下一个节点的指针。
- 双向链表:每个节点包含数据、指向下一个节点和上一个节点的指针。
- 循环链表:最后一个节点的指针指向头节点,形成循环。
-
栈(Stack):一种后进先出(LIFO, Last In First Out)的数据结构。元素只能从栈顶插入或删除。
-
队列(Queue):一种先进先出(FIFO, First In First Out)的数据结构。元素只能从队列尾插入,从队列头删除。
- 双端队列(Deque):可以在队列的两端插入和删除元素。
- 优先队列(Priority Queue):每个元素都有优先级,元素按优先级出队。
-
哈希表(Hash Table):通过哈希函数将键映射到表中的位置,从而实现快速的查找、插入和删除操作。
-
树(Tree):
- 二叉树(Binary Tree):每个节点最多有两个子节点。
- 二叉搜索树(Binary Search Tree, BST):一种有序二叉树,左子节点小于根节点,右子节点大于根节点。
- 平衡二叉树(Balanced Binary Tree):如AVL树、红黑树,保持树的高度平衡,确保操作的时间复杂度为O(log n)。
- 堆(Heap):一种特殊的二叉树,分为最大堆和最小堆,堆顶元素为最大或最小值,常用于实现优先队列。
-
图(Graph):由顶点和边组成的数据结构,边可以是有向的或无向的。
- 邻接矩阵:一种使用矩阵表示图的方法,适合稠密图。
- 邻接表:一种使用链表或数组表示图的方法,适合稀疏图。
-
集合(Set):一种不允许重复元素的数据结构,通常用于处理无序且唯一的元素集合。
-
字典(Map/Dictionary):一种键值对存储的数据结构,每个键唯一对应一个值,常用于快速查找。