摘要:
2014.06.14 23:27简介: 二叉搜索树是学习二叉树之后,接触的第一个实用数据结构。特点是,左子树全部小于根,右子树全部大于根,元素不重复。一般能够支持对数级别的增删改查操作,但在二叉树发生倾斜的情况下,效率会下降至线性。下面给出插入、删除、查找的示意图。修改可以认为是先删除后插入。图示... 阅读全文
摘要:
2014.06.14 22:49简介: 二叉树是学习树结构时接触的第一个概念,其他衍生的表示形式包括N叉树(随便多少叉)、二叉链表(土话也叫左孩子右兄弟)。由于单纯的二叉树是无序的,能做的事情不太多,我只实现了基本的结构体和序列化方法。图示: 实现: 1 // My implementation... 阅读全文
摘要:
2014.06.14 22:26简介: 栈,是先进先出的结构。我们只关心栈的大小和栈顶的元素。图示: 实现: 1 // My implementation of stack. 2 class Stack { 3 public: 4 Stack() { 5 m_capaci... 阅读全文
摘要:
2014.06.14 21:40简介: 单向链表应该是绝大多数C语言初学者学会的第一个结构体了。每个节点会指向后续节点,属于顺序结构。由于单链表的实现简单,并且有着明显的限制,使其成为各种天才面试官们虐小朋友的利器(链表的功能实在很有限,而面试官总是要求你用链表完成各种各样的任务,难度就在这儿了)... 阅读全文
摘要:
2014.06.14 21:04简介: 队列作为先进先出(FIFO)思想的代表,是最基础的数据结构之一,最典型的应用,就是广度优先搜索。实现方式可以用一条单链表或者两个栈,其中前者更为靠谱,原因请自行分析。图示: 下图为单链表实现队列的思路。链表的头尾位置分别被记录,因此很容易实现尾进头出的操作... 阅读全文
摘要:
2014.06.14 20:17简介: 双向链表是LRU Cache中要用到的基本结构,每个链表节点左右分别指向上一个和下一个节点,能够自由地左右遍历。图示: 实现: 1 // My implementation for doubly linked list. 2 struct ListNo... 阅读全文