随笔分类 -  《算法导论》&《算法》学习笔记

《算法导论》第3版,作者Thomas H.Cormen等,殷建平等译; 《算法》第4版,作者Robert Sedgewick & Kevin Wayne, 谢路云译。
摘要:树的介绍部分摘取自博文二叉查找树(一)、二叉查找树(二)、二叉查找树。1. 树的介绍1.1 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: (1) 每... 阅读全文
posted @ 2014-11-12 23:18 峰子_仰望阳光 阅读(701) 评论(0) 推荐(0)
摘要:本文有关栈的介绍部分参考自网站数据结构。 1. 队列 1.1 队列的定义 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 (1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。 (3)当队列中没有元素时称为空队列... 阅读全文
posted @ 2014-11-04 21:30 峰子_仰望阳光 阅读(1062) 评论(0) 推荐(0)
摘要:本文有关栈的介绍部分参考自网站数据结构。 1. 栈 1.1 栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。 (3)栈为后进先出(Last In... 阅读全文
posted @ 2014-11-04 15:33 峰子_仰望阳光 阅读(1779) 评论(1) 推荐(0)
摘要:本文双链表介绍部分参考自博文数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现。 1 双链表介绍 双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便... 阅读全文
posted @ 2014-11-02 19:15 峰子_仰望阳光 阅读(980) 评论(0) 推荐(0)
摘要:对于单链表,我们大多时候会用指针来实现(可参考基于指针实现的单链表)。现在我们就来看看怎么用数组来实现单链表。 1. 定义单链表中结点的数据结构1 typedef int ElementType;2 class NodeType3 {4 public:5 ElementType dat... 阅读全文
posted @ 2014-10-27 19:32 峰子_仰望阳光 阅读(747) 评论(0) 推荐(0)
摘要:对于单链表的介绍部分参考自博文数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现。 1. 单链表介绍 单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针。 1.1单链表的示意图 表头为空,表头的后继节点是"节点10"(数据为10的节点),"节... 阅读全文
posted @ 2014-10-26 22:55 峰子_仰望阳光 阅读(720) 评论(0) 推荐(0)
摘要:我们利用静态分配的数组来实现的顺序表的局限还是挺大的,主要在于它的容量是预先定好的,用户不能根据自己的需要来改变。如果为了后续用户能够自己调整顺序表的大小,动态地分配数组空间还是很有必要的。基于动态分配的数组的顺序表绝大部分跟基于静态分配的数组的顺序表是一样的,只需在后者程序上改动一小部分即可。... 阅读全文
posted @ 2014-10-20 22:50 峰子_仰望阳光 阅读(1201) 评论(0) 推荐(0)
摘要:首先,我们来搞明白几个概念吧(参考自网站数据结构及百度百科)。 线性表 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。在实现线性表数据元素的存储... 阅读全文
posted @ 2014-10-18 18:46 峰子_仰望阳光 阅读(1016) 评论(0) 推荐(0)