coderwhy数据结构:
链表
head
结构:
封装链表类:
常见操作:
insert图解:
双向链表:
head、tail
封装双向链表类:
常见操作:
集合
由无序(不能通过下标访问)、不重复的元素组成
常见的实现方式:哈希表
封装:
字典
key不能重复,value可以
哈希表
哈希函数:根据员工名,快速转化成下标值=工号,继而其他操作(查找员工的详细信息)
解决哈希冲突方法2way:
一般就冲突两三个
①链地址法(在冲突数组的单元里面,存一个数组/链表,而不是存一个数。当查询时,先根据哈希化的下标值找到对应的位置,再取出链表,依次查询需要的数据 )
②开放地址法:
寻找空白的单元格来添加重复的数据(添加新数据,发现本来是我的位置被别人占了,那就找别的空位即可)
找别的空位的方法:线性探测,二次探测,再哈希法
线性探测:
插入数据↓
查找数据↓
二次探测:
再哈希法:
树
术语:
树
儿子兄弟表示法:
二叉树
5种形态:
笔试题常考特性:(no anki)
**存储: 完全二叉树用数组还可以
存:没问题
取:左节点--父节点2 右节点--父节点2+1
存储:通常用链表
封装BST代码:
常见操作:
先序遍历:
①访问根节点②先序遍历其左子树③先序遍历其右子树