数据结构
yí無所冇
这个作者很懒,什么都没留下…
展开
-
线性结构-链表 Linked List
1.链表的定义 类似于之前的栈与队列,链表也是一种线性的数据结构,但是又不同于他们,因为列表是真正的动态数据结构,如图: 在class中,分别定义了e和next,e可以理解为存储我们真正的数据,而next的类型则为Node,所以next是当前node节点的下一个节点,所以说链表好比一个火车,除了我们一节一...原创 2018-08-09 11:17:24 · 507 阅读 · 0 评论 -
线性结构-栈 Stack
1.栈的定义 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 栈是一种后进先出的数据结构。 允许插入和删除的一段称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表。关于栈顶和栈底如图所示: 2....原创 2018-08-08 11:48:52 · 199 阅读 · 0 评论 -
集合和映射 Set and Map
1. 集合 Set 1.1 定义 集合是具有某种相似特性的事物的全体。它的重要特点是其中的数据元素无序且不重复,这也就是判断是否使用该容器的依据。 1.2.1 利用二分搜索树实现集合 利用我之前的树的定义和实现中的bst.go函数来调用而实现的package arrtype Set struct{ root Roo...原创 2018-08-15 18:06:02 · 162 阅读 · 0 评论 -
线性结构-队列 Queue
1.Queue定义 1.1 普通队列像栈一样,队列(queue)也是一种线性表,它的特性是先进先出,插入在一端,删除在另一端。就像排队一样,刚来的人入队(push)要排在队尾(rear),每次出队(pop)的都是队首(front)的人。如图1,描述了一个队列模型。队列(Queue)与栈一样,是一种线性存储结构,它具有如下特点:队列中的数据元素遵循“先进先出”(First In...原创 2018-08-08 15:40:35 · 408 阅读 · 0 评论 -
线性结构-递归
1.定义 所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。 我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词。可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂...原创 2018-08-13 11:12:43 · 233 阅读 · 0 评论 -
树结构-二分搜索树
1.树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的树,其中我们平常使用的目录就是常见的树; 1.1 二叉树的定义 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtr...原创 2018-08-13 16:38:21 · 245 阅读 · 0 评论 -
堆和优先队列
1.堆 1.1 定义 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 ...原创 2018-08-17 09:31:15 · 154 阅读 · 0 评论