数据结构跟算法是一门很重要的课程,但是很多时候这门课总是给人一种晦涩难懂的感觉,最近读了《我的第一本算法书》,让我对数据结构与算法有了新的认识,这本书没有一开始就介绍专业术语,而是通过图表的方式来进行讲解的,个人很喜欢。
第一章介绍线性结构与非线性结构
(1)链表,适合用来插入、删除数据,查找访问时,使用的是顺序查找。
- 在7、10中间插入9(如下图所示)
- 删除10
循环链表,插入、删除操作一样
双向链表,插入、删除操作在前趋指针与后继指针处有所不同。
(2)数组,适合用来查找,查找时使用的是随机访问的方式。
数组的下标是从0开始
(3)栈和队列
(4)哈希表,用一定容量的数组,将需要存放的数存进去
通过哈希函数得一组数的哈希值为53,74,86存放在长度为5的数组中
53mod5=3,74mod5=4,86mod5=1
如果求得的余数相同,则称为冲突,此时有两种方式来解决,一种是在已有数据的后面添加链表,另一种是将冲突的数据存放在后一个数组中,如果下一个也存有数据,则继续看下一个数组,直到找到空的为止。
如添加44,44mod5=4
(5)堆,小根堆,子结点必定大于父节点
将数据2,3,4,7,9,14,17按小根堆排序
(6)二叉查找树
特征:①每个结点的值均大于其左子树上任意一个结点的值;②每个结点的值均小于其右子树上任意一个结点的值。
将15,7,1,22,24,27按二叉查找树排列