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

数据结构与算法深入

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

关注
1 已关注
21篇博文
  • 数据结构——线性结构(5)——顺序队列的实现

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

    3天前 16:53
    127
  • 数据结构——线性结构(4)——顺序队列与循环队列的原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    虽然利用vector来实现charstack很简单。但是更重要的是,依靠Vector类使得更难分析CharStack类的性能,因为Vector类隐藏了这么多的复杂性。因为你还不知道Vector类的详细...

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

    还记得吗?我们在《C++学习与基础算法专栏》提到过的STL库中的Stack类,它允许客户端通过在类型名称之后指定尖括号中的基类型来创建不同类型的堆栈。 RPN计算器使用Stack 来保存值。 编写参数...

    2017-06-05 21:08
    298
  • C++算法学习——预备知识(5)——异常处理(2)

    C ++标准库提供了一个专门用于声明要抛出的对象作为异常的基类。它被称为exception,并在命名空间std下的头文件中定义。这个类有通常的默认和复制构造函数,运算符和析构函数,以及一个额外的虚拟成...

    2017-06-05 21:05
    276
  • C++算法学习——预备知识(4)——异常处理(1)

    异常(Exceptions)异常提供了一种通过将控制转移到名为处理程序的特殊功能来对我们程序中异常情况(如运行时错误)做出反应的方法。 要捕获异常,我们必须将一部分代码放在异常检查下。 这是通过将该...

    2017-05-29 15:43
    371
  • C++算法学习——预备知识(3)——类模板

    类模板从上一篇的博客里面我们可以清楚的看到模板在编程中的广泛应用。那么既然函数有模板,我们的类当然也有模板。 下面的内容,主要翻译自 http://www.cplusplus.com/doc/old...

    2017-05-28 18:42
    538
  • C++算法学习——预备知识(2)——函数模板

    函数模板函数模板是可以使用通用类型运行的特殊功能。这允许我们创建一个函数模板,其功能可以适应多种类型或类,而不会重复每种类型的整个代码。 在C ++中,这可以使用模板参数来实现。模板参数是一种特殊类...

    2017-05-26 15:25
    528

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