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

数据结构与算法深入

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

关注
1 已关注
27篇博文
  • 数据结构——树(2)——二叉堆的基本操作原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2017-08-25 19:36
    232
  • 数据结构——链表(3)

    链表是什么现在我们可以回头总结一下我们的链表: - 链表是一个由节点组成的一条链。 - 每个节点包含两条信息: - 序列中存储的是一些数据 - 节点中有指向列表中下一个节点的链接。 - 我们...

    2017-08-24 22:13
    170
  • C++算法学习——数据结构——链表(2)

    链表中的插入无论光标位于何处,链表的插入操作都包括以下步骤: 1. 为新单元格分配空间,并将指针存储在此单元格中的临时变量cp中的。 2. 将要插入的字符复制到新单元格的 ch 成员中。 3. ...

    2017-06-14 21:19
    627
  • C++算法学习——数据结构——链表(1)

    下表显示了基于数组和基于栈的编辑器实现的编辑器操作的计算复杂度。 哪个实现更好呢? 没有一些usage pattern的知识,就不可能回答这个问题。 然而,通过了解一些人们使用编辑器的方式,表明基于...

    2017-06-14 20:02
    527
  • C++算法学习——经典的抽象设计——基于栈实现的buffer

    基于数组实现的buffer算法复杂度在提这部分内容的时候,我们先回顾一下我们前面的基于数组实现的文件:C++算法学习——经典的抽象设计——buffer(3) 为了建立与其他表示法进行比较的基准,最重...

    2017-06-13 17:18
    324
  • C++算法学习——经典的抽象设计——charstack的深层复制

    就目前而言CharStack类的实现尚未完成。只要你通过引用传递每个CharStack对象,并且不将一个CharStack值分配给另一个,一切都将正常工作。 但是,如果你的代码最终通过值传递CharS...

    2017-06-13 15:31
    269
  • C++算法学习——经典的抽象设计——堆—栈模式

    如果不绘制大量图片,我们是难以理解内存分配的工作原理。 用于可视化分配过程的最佳工具是 堆—栈 图,其中列出了堆和堆栈上的内存状态。 使用new操作符创建的动态分配的内存显示在图的左侧,表示堆。 每个...

    2017-06-11 21:35
    470
  • C++算法学习——经典的抽象设计——buffer(3)

    实现buffer操作鉴于此设计,大多数编辑器操作非常容易实现。可以通过向游标标字段的内容分配新值来实现移动游标的四个操作中的每一个。例如,移动到buffer的开始,只需要将值0分配给游标; 将其移动到...

    2017-06-05 21:19
    518
  • C++算法学习——经典的抽象设计——buffer(2)

    编码editor应用程序一旦你定义了公共界接口,即使你尚未实现buffer类或适当的内部表示方式,你也可以自由返回并编写编辑器应用程序。编写编辑器应用程序时,唯一重要的考虑因素是你要假设每个操作都执行...

    2017-06-05 21:18
    347
  • C++算法学习——经典的抽象设计——buffer(1)

    编辑缓冲区的概念无论何时发送短信或编辑其中一个程序的源文件,你都会使用一个编辑器,它是一个软件应用程序,允许你创建和更改由字符组成的文件。在内部,编辑器保存维持一系列字符,这个区域通常称为缓冲区(bu...

    2017-06-05 21:16
    410
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部