基本数据结构
这一章的内容基本都是之前了解的数据结构,有新意的是本章中对基本数据结构的实现方法。
书中的一个基本假设是在非常荒凉的编程环境中实现数据结构,你可以利用的基础设施只有数组和下标,有时候甚至假设连指针都没有,可以说利用数组实现一切。
栈和队列
用数组实现了这两种数据结构
链表
分析了链表的搜索,插入,删除等操作
提到了一个概念“哨兵”,哨兵用与链表中的主要作用是帮助处理链表收尾的边界情况,减少一些判断使代码更紧凑,对于链表操作性能的影响仅限于常系数的大小
指针和对象的实现
这个就变态了,假设在没有指针类型的环境中实现对象,这里使用的例子是链表作为对象,即没有指针,用数组和下标实现链表。
当然,这个假设是没有显示的指针类型,即不能再链表对象的 next 中填写下一个对象的地址,只能用下一个对象的数组下标进行标识。
几个知识点分别是:
1.用多个数组实现链表,但是只能管理同构的对象
2.用单个数组实现链表,更灵活,可以管理不同长度的对象
3.以多个数组的实现为例,说明如何管理存储空间的分配与释放,是以自由表(另外一个链表)实现的
有根树的表示
二叉树的实现和链表类似,可以使用多个数组
分支无限制的有根树直接按属性数量使用多个数组不好,一是不确定有多少属性,二是大量的属性为空造成浪费,使用“左孩子右兄弟表示法”在多个数组上实现