博客专栏  >  编程语言   >  数据结构与算法深入

数据结构与算法深入

这个专栏是可以说是C++学习与基础算法的续栏吧。至于为什么没写在一起,主要是这部分知识也不再局限于C++的基本知识跟语法了。上一个栏目,确实挺多是书上的知识,我也比较少自己的东西,大概一半是书本知识一半的自己总结。这个专栏,我会结合cs106B的ppt来总结

关注
6 已关注
36篇博文
  • 数据结构——树(11)——AVL树的实现(1)

    重温AVL树 我们上篇的文章介绍过什么叫平衡二叉树,以及我们是怎么样实现二叉树的平衡的。其中AVL树就是其中的一种算法。现在回顾一下,我们说过导致树不平衡的插入方式有四种。现在我们用实例来说明,假设...

    2018-02-13 23:14
    98
  • 数据结构——树(10)——平衡二叉树与AVL算法

    平衡树介绍 前几篇的文章我们介绍了一下二叉树和二叉搜索树。现在假设我们要建立一棵BST,依次插入下列数据: 20, 33, 50, 61, 87, 99 那么按照BST的规则我们可以得到下列的B...

    2018-02-05 00:08
    83
  • 数据结构——树(9)——二叉搜索树的操作实现C++代码

    写了两天的二叉搜索树的操作原理,今天就把操作的C++代码拿出来大家分享。 头文件BST.h #include #include using namespace std; /*定义节点结...

    2018-02-02 14:53
    85
  • 数据结构——树(8)——二叉搜索树的插入和删除操作

    二叉搜索树的插入操作 我们要在二叉搜索树中执行各种操作的前提就是,我们首先要有一棵二叉搜索树。那么,如何创建一棵二叉搜索树呢?最简单的方法就是我们可以从一棵空树开始,每次调用一个addNode函数,...

    2018-02-01 18:15
    60
  • 数据结构——树(7)——二叉搜索树及其操作原理

    二叉树与二叉搜索树 在之前的文章中,我们提到过三叉树,n叉树,但是我们实际用的最多却是二叉树,因为这样的结构更适合我们编程和更适合我们使用递归的方式。所以我们可以限制孩子的数量使得生成的树更容易实施...

    2018-01-30 18:00
    67
  • 数据结构——树(6)——树的遍历C++代码

    这篇博文,主要验证上篇的树的遍历。再多的理论解释都不如来一个实例实际。现在就拿一个实例来测试这次的遍历。假设我们有这样的一棵树: 我们要用不同的方式去遍历。那么我们首先要做的就是,先建立一个个节...

    2018-01-26 16:15
    61
  • 数据结构——树(5)——树的先序,中序,后序,层次遍历

    树的存储结构 之前我们提到过堆是一棵特殊的树,在堆的存储方式中,我们选择了数组的方式去存储。因为只要知道一个节点的位置我们就能找到其他的节点的位置。但是前提是堆是一棵完全二叉树。树的结构多种多样,没...

    2018-01-25 23:49
    107
  • 数据结构——树(4)——什么是树?

    树的递归结构 在正式学习树(tree)这个结构之前,我们实际上已经接触过这个结构了,堆(heap)实际上就是一个特殊的树,一棵完全二叉树。现在我们从一幅图中来了解一下什么是树状结构: 这幅图主...

    2018-01-23 16:25
    132
  • 数据结构——树(3)——堆的建立与排序

    二叉堆的建立 在继续学下去之前,我们先来看看我们学习堆这个数据结构到底有什么意义,或者说有什么用。 - 排序(堆排序,heap sort) - Google map(即在两个地点之前寻找最短的路...

    2018-01-22 15:26
    64
  • 数据结构——树(2)——二叉堆的基本操作原理

    ###二叉堆的存储 上次我们讨论了什么是二叉堆,以及完全二叉树的定义,这次我们来看看,我们应该如何来存储我们的二叉堆。先来看看下面的这个二叉堆: 我们看到这个,也许我们第一反应是用一个基于节点...

    2017-11-04 15:39
    556
  • 数据结构——树(1)——二叉堆

    优先队列我们回顾之前我们学过的队列,队列中的元素按照特定的顺序进行储存,并只能先进先出。然而,在现实生活中,我们却想把元素按照一定的优先级储存起来。举个现实中的例子: - 我们平时坐高铁,会有所谓的...

    2017-10-27 16:13
    207
  • 数据结构——线性结构(9)——Vector的实现过程详解

    vector的基本操作及其特点在实现vector之前,我们都知道vector是可以储存任意类型的数值的。为了实现更一般的数据操作,我们当然是得要用模板类代替传统的实现。并且我们要实现[ ]的重载。头文...

    2017-10-22 15:56
    522
  • 数据结构——线性结构(8)——动态数组与Vector

    动态数组与Vector为什么要删除数组占用的内存?我们先来看下面的一段代码:const int INIT_CAPACITY = 1000000;class Demo { public: Dem...

    2017-10-21 14:36
    442
  • 数据结构——线性结构(7)——链队列的实现

    链队列的实现头文件:/* *这部分文件实现我们之前所使用的queue类 *它主要的原理为 后进后出(LILO) */ #ifndef _Queue_h #define _Queue_h /* ...

    2017-10-21 13:00
    111
  • 数据结构——线性结构(6)——链队列的原理

    链队列队列类也使用链表结构进行简单的表示。为了说明基本的方法,队列的元素存储在从队列头部开始并以尾部结尾的列表中。并且为了保证入队和出队持续运行,Queue对象必须含有指向队列两端的指针。 因此,私有...

    2017-09-25 11:48
    575
  • 数据结构——线性结构(5)——顺序队列的实现

    queue.h文件其实这部分文件跟我们的栈的头文件定义是一样的,就是我们的pop和push换成了enqueue跟dequeue/* *这部分文件实现我们之前所使用的queue类 *它主要的原理为 ...

    2017-09-21 16:53
    425
  • 数据结构——线性结构(4)——顺序队列与循环队列的原理

    队列的接口从上一个专栏可以看出,栈和队列是非常相似的结构。它们之间的唯一区别是处理元素的顺序。栈使用后进先出(LIFO)的规律,其中对于栈来说push的最后一个元素始终是第一个pop的元素。而队列采用...

    2017-09-03 23:55
    855
  • 数据结构——线性结构(3)——链栈的实现

    链栈的实现基于上一篇的内容,我们就直接上我们的实现文件,对于里面的实现,边画图边理解:Stack.h文件 /* *这部分文件实现我们之前所使用的stack类 *它主要的原理为 后进先出(LIFO)...

    2017-09-02 19:16
    620
  • 数据结构——线性结构(2)——链栈中的push和pop操作

    链栈尽管数组是堆栈最常见的底层表示形式,但也可以使用链表实现Stack类。 如果这样做,空堆栈的概念表示就是NULL指针: 当你将新元素推入堆栈时,该元素只会添加到链表的前端。因此,如果将元素e...

    2017-08-26 20:46
    1564
  • 数据结构——线性结构(1)——顺序栈的实现

    我们前面介绍的Stack,Queue和Vector类是抽象数据类型的一般类别的例子,称为线性结构(linear structures),其中元素以线性顺序排列。这个系列讨论了这些类型的几种可能的表示方...

    2017-08-25 19:36
    362

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部