数据结构
数组
固定大小的结构,只能容纳相同的数据类型。数组自带索引,可以进行随机访问
- 遍历
- 插入
- 删除
- 搜索
- 更新
链表
相互链接的线性顺序项目序列组成。只能顺序访问,无法进行随机访问。
- 链表中的元素叫做节点
- 每个节点包括一个密钥和一个指向后继节点next的指针
- head指向链表的第一个元素
- 链表的最后一个元素叫尾
单链表: 只能沿正向遍历链表
双链表: 可以在前进和后退方向上遍历项目
循环链表: 尾的next是头,头的prior是尾
栈
- push: 堆栈顶部插入一个元素
- pop:删除最上面的元素并返回
- peep: 返回栈顶元素
- isEmpty: 检查堆栈是否为空
- isFull: 检查栈是否已满
队列
- 进队: 将元素插入队列的末尾
- 出队: 删除队列开头的元素
哈希表
插入和查询的效率非常高。直接寻址使用键与值的一对一映射。
key---->index---->value
树
数据按照层次组织并链接在一起。
二叉树:
- key: 存储在节点中的值
- left: 指向左儿子的指针
- right: 右
- p: 指向父节点的指针
堆
二叉树的一种特殊情况,将父节点与其子节点的值进行比较,并对其进行排序。
- 最小堆-父项的密钥小于或等于子项的密钥。这称为min-heap属性。根将包含堆的最小值。
- 最大堆数-父项的密钥大于或等于子项的密钥。这称为max-heap属性。根将包含堆的最大值。
图
一个图由一组有限的顶点或节点以及一组连接这些顶点的边组成。图的顺序是图中的顶点数。图的大小是图中的边数。如果两个节点通过同一边彼此连接,则称它们为相邻节点。
- 有向图: 图形的所有边缘都具有指示什么是起始顶点和什么是终止顶点的方向
- 无向图: 图的所有边缘均无方向