算法导论第10章,基本数据结构

Posted yesuuu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法导论第10章,基本数据结构相关的知识,希望对你有一定的参考价值。

10.1 栈和队列

都是动态集合,Delete操作是预先设定好的。

Insert:push Delete: pop

实现,一个计数器记录元素数量

同理,队列实现是一个计数器记录首尾元素的位置,如果首元素太过靠后,尾元素可以过来。

 

10.2 链表

双向链表:每一个元素是一个对象,有prev, next两个指针,还有元素本身的数值,两边的元素是None

L.head指向第一个元素。

链表搜索 、 插入、 删除、

哨兵:主要作用:简化边界值的处理!

  看着也像是一个元素,只不过值为空,这样一个双向链表可以变成一个有哨兵的双向循环链表,哨兵位于表头和表尾中间。

不能滥用哨兵:如果有很多个很短的链表,那么哨兵占用的额外存储空间会造成存储浪费。

 

10.3 指针和对象的实现

对象多数组表示,位置用另一个方向的下标来表示

对象单数组表示,连续的数组储存所有的信息,位置用下标来表示。优势:允许不同长度的对象存储于同一数组中。

对象的分配与释放: 一般由gc负责

  以下针对多数组表示的双向链表:

  维护一个单链表:自由表,只有next数组,每个对象不是在链表中,就是在自由表中。自由表类似一个栈,下一个分配的就是刚刚被释放的。

 

10.4 有根树的表示

用链式数据结构表示:

二叉树:很容易

节点数量无限制的数:左孩子右兄弟表示法

其他表示方法:视具体情况而定,例如完全二叉树在堆排序中用一个数组表示。

以上是关于算法导论第10章,基本数据结构的主要内容,如果未能解决你的问题,请参考以下文章

算法导论第15章,动态规划

算法导论笔记第6章 堆和堆排序

第15章动态规划------算法导论

数据挖掘导论 第4章 分类:基本概念决策树与模型评估

算法导论第2章参考答案与编程题选

算法导论第12章,二叉搜索树