程序语言的奥妙 算法解读 日本人编著。
单项链表的一个元素由数据和指向下一个结点的指针构成;单项链表中要指出开头元素的头结点的指针
双向链表:从双向开始都可以遍历所有数据。
三要素:数据,指向前面一个结点的指针,指向后面一个结点的指针。
在查找第N个元素这种情况,数组比链表更高效。数组就是array[N]就可以,链表必须从第一个元素查找,一个个都翻看一遍才能找到想要的元素。
查找第N个元素时候,数组可以利用下标直接查到,但在链表中需要从第一个元素顺序遍历查找,花费太多时间。
数据,插入,删除操作,利用链表的指针效率很高,数组需要把插入位置后面的所有元素都向后移动。
唤醒缓冲区是数组的头尾相连的数据结构,尾元素的下一个元素即为头元素
二叉树:一个树结点和两个子结点组成的结构
单链表使用一个指向后继结点的指针,二叉树使用两个指向后记指针。
根节点位于顶端,没有爸爸,
叶结点位于底部,没有儿子
从根节点到叶节点的层数叫做深度
033
堆:父节点的值小于等于子节点值的二叉树叫做堆。
堆的根一般是最大值或者最小值。适合求极值
把堆改造成数组,从上到下,从左到右;
034:哈希表:数组和链表组合的一种数据结构
被称为跟数组并且元素数为N的数组。
跟数组的元素作为链表的头指针。
哈希函数:返回把输入数与哈希表元素数作商求余的值。
哈希值:
哈希函数用来计算哈希值,哈希值是数组里面的