列表,栈,队列,链表,字典,散列,图,二叉查找树
列表
- 日常生活中:购物清单,待办事项列表等
- 数据结构较为简单
- 不需要在一个长序列中查找元素,或者对其进行排序
栈
- 栈是一种特殊的列表,只能通过列表的一端进行访问,这一端被称为栈顶
- 餐厅里的盘子叠在一起,从最上面取盘子,洗完也只能放在上面
- 所以他是先进后出,后入先出的高效数据结构,因为数据只能在栈顶添加或删除,所以操作很快
- 比如函数调用栈
队列
- 队列也是一种特殊的列表
- 只能在队尾添加元素(入队),只能在队头删除元素(出队)
- 我们在银行排队,排在最前面的人第一个办理业务,然后出去
链表
- 链表也是一种特殊的列表
- 每个节点存下个节点的指针
- 有双向链表,单向链表,循环链表
字典
- 键值对的存储结构
散列
- (散列)哈希表是一种常用的数据结构,散列后的数据可以快速插入
- 在散列表上插入,删除都非常快,但是查找效率非常低
- 查找一组数组中的最大值和最小值,一般要求助于其他数据结构,比如二叉查找树
- 即使一个高效的散列函数,也可能将两个键映射为同一个值的可能,这种现象叫碰撞。常见碰撞的处理方法:开链法和线性探测法
图
- 图是由边的集合和顶点的集合组成
- 两个城镇由某种道路相连,每个城镇是一个顶点,道路就是边
- 顶点也有权重,也叫成本
- 如果一个图的顶点对是有序的:有向图==流程图
- 如果无序,就是无序图
- 搜索图的算法:深度优先搜素和广度优先搜索
二叉树和二叉查找树
- 树是一种非线性结构,以分层的方式存储数据。
- 二叉树每个节点的子节点不允许超过两个。
- 一个父节点的两个子节点分别称为左节点和右节点,通过将子节点的个数限定为 2 个,可以高效插入,查找,删除。
- 二叉查找树(BST)是一种特殊得二叉树,相对较小的值保存在左节点中,较大的值保存在右节点中。这一特性使得查找的效率很高。