08 2018 档案

摘要:一:问题 二:思考 (一)步骤一:将前P个元素逆置 (二)步骤二:将后P个元素逆置 (三)步骤三:将所有元素逆置(实现) 三:代码实现 四:性能分析 五:补充 右移 六:总结左移和右移 (一)左移:将R中前p个元素逆置,剩下逆置,整体逆置 (二)右移:整体逆置,前p逆置,后p逆置 阅读全文
posted @ 2018-08-31 23:28 山上有风景 阅读(599) 评论(0) 推荐(0)
摘要:一:问题 注意: 二:思路 三:代码实现 阅读全文
posted @ 2018-08-31 22:51 山上有风景 阅读(930) 评论(0) 推荐(0)
摘要:一:题目 二:思路 三:代码实现 四:算法时间复杂度分析 (一)最坏情况:顺序表小到大,全部比较两次,数据比较次数2(n-1) (二)最好情况:顺序表大到小,只比较一次,数据比较次数n-1 综上所述,数据平均比较次数是: 符合要求 阅读全文
posted @ 2018-08-31 19:58 山上有风景 阅读(1981) 评论(0) 推荐(0)
摘要:一:题目 二:思路 三:算法实现(这里使用方法一:递归实现简单易懂) 阅读全文
posted @ 2018-08-31 19:20 山上有风景 阅读(714) 评论(0) 推荐(0)
摘要:一:问题 二:解题思路 三:算法实现 四:注意 阅读全文
posted @ 2018-08-31 19:01 山上有风景 阅读(771) 评论(0) 推荐(1)
摘要:一:分析: 大一学习积分的时候,我们学习过,可以通过矩形法来求定积分。 思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形(或梯形)的面积进行求和。 二:简单的例子 求函数X^2在的定积分 矩形法: #include<iostream> #include<math 阅读全文
posted @ 2018-08-30 21:09 山上有风景 阅读(4593) 评论(0) 推荐(1)
摘要:题意: 算法实现: (一)一种是按照链表数据结构(一)线性表循环链表之约瑟夫环 (二)使用数组实现 阅读全文
posted @ 2018-08-30 19:36 山上有风景 阅读(1192) 评论(0) 推荐(0)
摘要:前提: 算法实现: 阅读全文
posted @ 2018-08-30 09:37 山上有风景 阅读(3500) 评论(0) 推荐(1)
摘要:一:奇魔方阵 算法: 算法实现: 二:阶数n = 4 * m(m =1,2,3……)的偶魔方的规律如下: 算法实现: 三:阶数n = 4 * m + 2(m =1,2,3……)的魔方(单偶魔方) 阅读全文
posted @ 2018-08-30 07:54 山上有风景 阅读(2960) 评论(0) 推荐(0)
摘要:想看看侯捷老师的STL泛型编程....但是吧,还要复习其他的,尴尬了,而且还要考计算机四级,上学期zz了,只报了个三级,没注意看可以报多个...我擦,感觉这时间真是不够用,复习计算机网络,操作系统,真题训练.....,高数线代.... 阅读全文
posted @ 2018-08-29 14:59 山上有风景 阅读(264) 评论(0) 推荐(0)
摘要:一:一个目标 二:两种手段 三:八大原则 四:重构技法 五:从封装变化角度对模式分类 六:类图对比 对比所有模式的类图,几乎所有模式的结构都归属到:下面第三种类型 七:关注变化点和稳定点 八:什么时候不用模式 九:经验之谈 十:设计模式成长之路(4阶段) 阅读全文
posted @ 2018-08-28 20:21 山上有风景 阅读(320) 评论(0) 推荐(1)
摘要:前提:领域规则模式 典型模式 一:解释器模式Interpreter (一)概念 (二)动机 (三)代码分析(加减运算) 0.表达式基类 1.构建变量表达式(叶子结点) 2.符号表达式(树结点基类) 3.符号表达式子类实现(树结点),进行执行 4.解析表达式(获取的是解析的表达式,不是结果) 5.表达 阅读全文
posted @ 2018-08-28 19:02 山上有风景 阅读(1810) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:代码讲解 (一)原代码 需求:想要增加一个新的功能 (二)visitor模式 >前提:能够预料到未来可能会为这整个类层次结构添加新的操作,但是我不知道要加多少操作,什么操作 1.预先设计Element基类 2.完善visitor基类 3.element子类实现 上面实现了:预 阅读全文
posted @ 2018-08-28 18:05 山上有风景 阅读(322) 评论(0) 推荐(0)
摘要:前提:行为变化模式 典型模式 一:Command模式 (一)概念 (二)动机 (三)模式定义 (四)代码讲解 1.命令基类,定义接口 2.具体行为命令,继承自Command 3.命令组合 4.创建命令执行 (五)类图(结构) (六)要点总结 1.Command模式的根本目的在于“行为请求者”与“行为 阅读全文
posted @ 2018-08-28 15:42 山上有风景 阅读(382) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:模式定义 四:代码讲解 (一)Request对象:携带请求信息 (二)ChainHandler基类处理者: (三)Handler具体处理对象 (四)构建链表 五:类图(结构) 六:要点总结 (一)Chain of Responsibility模式的应用场合在于“一个请求可能有 阅读全文
posted @ 2018-08-28 11:08 山上有风景 阅读(543) 评论(0) 推荐(0)
摘要:一:概念 在应用Iterator模式之前,首先应该明白Iterator模式用来解决什么问题。或者说,如果不使用Iterator模式,会存在什么问题? 以上方法1与方法2都可以实现对遍历,这样有问题呢? 所以,Iterator模式的应用场景可以归纳为满足以下几个条件: 二:动机 三:模式定义 四:类图 阅读全文
posted @ 2018-08-28 09:52 山上有风景 阅读(747) 评论(0) 推荐(0)
摘要:前提:数据结构模式 典型模式 一:组合模式 (一)概念 (二)动机 (三)模式定义 (四)代码讲解 1.抽象接口 2.两种类型之一:树形结构 2.两种类型之一:叶子节点 3.客户程序 4.实现构建树 问题:若是不用composite模式,如何实现? 会导致: (五)类图(结构) 类比文件系统: (六 阅读全文
posted @ 2018-08-28 09:04 山上有风景 阅读(686) 评论(0) 推荐(0)
摘要:一:概念 二:应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。 三:动机 四:模式定义 五:代码讲解 (一)需要保存状态的对象 补充: (二)外部保存对象状态的类 (三)使用 六:类图(结构) 七:要点总结 (一)备忘录(Me 阅读全文
posted @ 2018-08-28 08:35 山上有风景 阅读(282) 评论(0) 推荐(0)
摘要:前提:状态变化模式 典型模式 一:State状态模式 (一)概念 (二)动机 (三)代码讲解 1.原代码 2.改进代码,将基类抽出 (四)模式定义 (五)类图(结构) (六)要点总结 1.State模式将所有与一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时, 切换相应的对象 阅读全文
posted @ 2018-08-28 08:11 山上有风景 阅读(820) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:模式定义 四:结构 五:与Facade模式比较 六:类图 七:要点总结 (一)将多个对象间复杂的关联关系解耦,Mediator模式将多个对象间的控制逻辑进行集中管理(定义一套调用机制的协议),变“多个对象互相关联”为“多个对象和一个中介者关联”,简化了系统的维护,抵御了可能的 阅读全文
posted @ 2018-08-28 07:30 山上有风景 阅读(306) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:模式定义 四:类图(结构) 五:代码讲解 六:要点总结 (一)Adapter模式主要应用于“希望复用一些现存的类,但是接口又与服用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。 (二)GoF23定义了两种Adapter模式的结构实现:对象适配器和类适配器。但 阅读全文
posted @ 2018-08-27 10:49 山上有风景 阅读(348) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:模式定义 四:类图(结构) 五:代码讲解 (一)原代码 (二)代理版本 六:要点总结 (一)“增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方案。在面向对象系统中,直接使用某些对象会带来很多问题,作为间接层的Proxy对象便是解决这一问题的常用手段。 (二)具体Pr 阅读全文
posted @ 2018-08-27 10:20 山上有风景 阅读(787) 评论(0) 推荐(0)
摘要:前提:接口隔离模式 典型模式: 一:门面模式(外观模式) 推文:外观模式 Facade Pattern (一)概念 (二)动机 (三)系统间耦合的复杂度 (四)模式定义 (五)结构(没有特定的模式) (六)要点总结: (将子系统的变化限制在一个范围内) 1.从客户程序的角度来看, Façade 模式 阅读全文
posted @ 2018-08-27 09:49 山上有风景 阅读(781) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:模式定义 四:代码讲解 五:类图(结构) 六:要点总结 (一)面向对象很好的解决了抽相性的问题,但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight主要解决面向的代价问题,一般不触及面向对象的抽象性问题。 (二)Flyweight采用对象共享的做 阅读全文
posted @ 2018-08-27 09:24 山上有风景 阅读(182) 评论(0) 推荐(0)
摘要:前提:“对象性能”模式 面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。 前面是利用抽象手段来实现松耦合的设计,但是抽象必不可免的会带来一定代价,比如虚函数(倍乘) 典型模式: 单件 阅读全文
posted @ 2018-08-27 08:29 山上有风景 阅读(501) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:代码解析(建造房子) 四:模式定义 五:进一步优化(对象过于复杂,除了上面步骤还有其他方法和属性) 六:类图(结构) 七:要点总结 (一)Builder模式主要用于“分步骤构建一个复杂对象”。在这其中“分步骤”是一个稳定算法,而复杂对象的各个部分则经常变化。 (二)变化的点在 阅读全文
posted @ 2018-08-26 19:39 山上有风景 阅读(756) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:代码讲解 (一)原代码 //具体类 class BinarySplitter : public ISplitter{ }; class TxtSplitter: public ISplitter{ }; class PictureSplitter: public ISplit 阅读全文
posted @ 2018-08-26 16:59 山上有风景 阅读(336) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:和工厂方法模式区别 四:代码讲解(连接不同数据库) (一)原代码 问题提出: (二)支持面向接口编程 (三)添加工厂 新的问题: (四)引出抽象工厂 五:模式定义 六:类图(结构) 七:要点总结 (一)如果没有应对“多系列对象构建”的需求变化,则没有必要使用 Abstract 阅读全文
posted @ 2018-08-26 14:42 山上有风景 阅读(442) 评论(0) 推荐(1)
摘要:前提:“对象创建”模式 典型模式(表现最为突出) 一:工厂方法模式 (一)概念 (二)动机 (三)代码讲解(同文件分割)问题提出 1.原代码 2.改进为抽象基类 (三)代码讲解(同文件分割)问题解决 1.改进一 2.改进二:使用虚函数 3改进三:将工厂基类和抽象类解耦 4.根据具体类创建一些类的具体 阅读全文
posted @ 2018-08-26 11:01 山上有风景 阅读(463) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:代码讲解(通信) (一)原代码 编译时装配:(我们查看Decorator模式中运行时装配) (二)改进业务抽象由继承转组合 (三)改进将子类转基类,实现在未来实现子类 (四)发现两个类只是类名不同所以我们可以去重复 (五)发现问题:接口规范出现问题(举一例) 1.在红一处:我 阅读全文
posted @ 2018-08-25 14:14 山上有风景 阅读(485) 评论(0) 推荐(0)
摘要:前提:"单一职责"模式 典型模式(表现最为突出) 一:装饰模式 (一)概念 (二)动机 (三)原代码讲解(流操作) 出现的问题: 问题的原因 (四)改进版本一(组合代替继承) 运行时装配: 另外注意: (五)改进版本二(使用装饰模式<中间基类>) 全部代码 (六)模式定义 (七)类图(结构) (八) 阅读全文
posted @ 2018-08-25 10:55 山上有风景 阅读(401) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:代码解析(文件分割器) (一)结构化思想 1.原代码 主窗口界面 文件分割类 2.需求提出:需要我们在文件分割时显示进度条 主窗口界面 文件分割类 依赖(编译时依赖):除非明确说明是运行时依赖,否则我们都认为是编译时依赖 (二)怎样去变化呢?怎么样去重构代码?观察者模式 1. 阅读全文
posted @ 2018-08-24 16:39 山上有风景 阅读(506) 评论(0) 推荐(0)
摘要:一:概念 二:动机 三:代码解析(税种计算) (一)结构化代码 1.原代码 2.需求变化,需要支持法国税法 我们可以发现上面的修改违反了一个原则:开放封闭原则(重点) (二)面向对象Strategy模式代码 1.原代码 2.修改代码,现在需要支持法国税务算法,进行扩展(新的文件) 复用性: 例如下面 阅读全文
posted @ 2018-08-24 11:04 山上有风景 阅读(578) 评论(0) 推荐(0)
摘要:前提:组件协作模式 典型模式(体现最为强烈,特征表现最为明显) 一:模板方法模式(Tempalte Method) (一)动机 (二)原代码讲解(模拟流程) 1.程序库开发(框架开发)人员,其中实现了1,3,5步骤 2.应用开发人员,我们需要实现2,4步骤 3.总结 (三)改进版代码讲解(了解调用机 阅读全文
posted @ 2018-08-23 16:38 山上有风景 阅读(523) 评论(0) 推荐(2)
摘要:一: 从目的来看: (一)创建型模式用来处理对象的创建过程,主要包含下面5种 1.工厂方法模式(Factory Method) 2.抽象工厂模式(Abstract Factory) 3.创建者模式(Builder) 4.原型模式(Prototype) 5.单例模式(Singleton) (二)结构型 阅读全文
posted @ 2018-08-23 13:21 山上有风景 阅读(363) 评论(0) 推荐(0)
摘要:一:为什么提倡面向对象设计? 二:重新认识面向对象 (一)理解隔离变化: (二)各司其职 (三)对象是什么: 三:设计模式基本原则 (一)依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定)。 抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于 阅读全文
posted @ 2018-08-23 12:23 山上有风景 阅读(347) 评论(0) 推荐(0)
摘要:一:课程目标 二:什么是设计模式 模式:在一定环境下,用固定的套路解决问题 设计模式Design pattern: 设计模式的使用时机: 三:GOF(Gang of Four)设计模式 四:浅谈面向对象 我们要注重两方面:底层思维和抽象思维 (一)底层思维:向下,把握机器底层,从微观理解对象构造 ( 阅读全文
posted @ 2018-08-23 09:47 山上有风景 阅读(310) 评论(0) 推荐(0)
摘要:花了两个星期,将数据结构回顾了一遍,下面开始进行做题,天勤开始刷题,真题开始做了,还有部分C中的习题未完成,需要回顾,要是有时间顺便回顾下设计模式吧.....要做的事真多,但是时间感觉总是走的那么快.....加油呀!!! 阅读全文
posted @ 2018-08-22 10:59 山上有风景 阅读(312) 评论(0) 推荐(0)
摘要:一:基本思想 二:图解实现过程 三:代码实现 四:快速排序优化 (一)优化选取枢轴 改进方法 (二)优化不必要的交换 (三)优化小数组 (四)优化递归操作(尾递归) 尾递归 递归与尾递归总结 普通递归 尾递归 代码实现 五:性能分析 阅读全文
posted @ 2018-08-22 10:01 山上有风景 阅读(7593) 评论(0) 推荐(2)
摘要:图解排序算法(四)之归并排序 定义 基本思想 分而治之 实现 递归实现 非递归实现 性能分析 阅读全文
posted @ 2018-08-21 20:38 山上有风景 阅读(613) 评论(0) 推荐(1)
摘要:一:定义 二:堆排序算法 三:图解演示,构造堆(大顶堆) 在构造有序堆时,我们开始只需要扫描一半的元素(n/2-1 ~ 0)即可,为什么? 因为(n/2-1)~0的节点才有子节点,如图1,n=8,(n/2-1) = 3 即3 2 1 0这个四个节点才有子节点 第一次找到[n/2]处,进行构造: 我们 阅读全文
posted @ 2018-08-21 17:01 山上有风景 阅读(13382) 评论(2) 推荐(14)
摘要:图解排序算法(二)之希尔排序 定义 基本思想 图解算法 代码实现 性能分析 阅读全文
posted @ 2018-08-21 13:31 山上有风景 阅读(582) 评论(0) 推荐(1)
摘要:经典排序算法 直接插入排序算法及其改进(稳定) 定义: 实现思想 基本思想 代码实现 性能分析 阅读全文
posted @ 2018-08-21 12:57 山上有风景 阅读(2533) 评论(0) 推荐(0)
摘要:一:简单选择排序 定义: 实现: 性能分析: 阅读全文
posted @ 2018-08-21 12:10 山上有风景 阅读(394) 评论(0) 推荐(0)
摘要:定义 数据: 版本一 冒泡排序(我们最常想到的) int main() { SqList s; s.length = 0; int i; int a[10] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 }; for (i = 0; i < 10; i++) { s.r[i + 阅读全文
posted @ 2018-08-21 10:52 山上有风景 阅读(525) 评论(0) 推荐(0)
摘要:一:定义 二:排序的稳定性 三:内排序和外排序 内排序和外排序的区分就是: 定义: 影响因素: 四:排序算法的种类 按照算法的复杂度分为两大类: 五:结构定义 阅读全文
posted @ 2018-08-21 09:58 山上有风景 阅读(486) 评论(0) 推荐(0)
摘要:一:概述 二:散列表查找步骤 (1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录; (2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。 三:散列函数的构造方法 要求: 1.计算简单 2.散列地址分布均匀 (一)直接定址法(使用某个线性函数值作为散列地 阅读全文
posted @ 2018-08-21 09:22 山上有风景 阅读(1796) 评论(0) 推荐(0)
摘要:前提 B+树 下图就是B+树,灰色关键字,在根节点出现,在叶子节点中再次列出。 与B树比较 阅读全文
posted @ 2018-08-20 22:49 山上有风景 阅读(1626) 评论(0) 推荐(0)
摘要:B 树 B树与B+树 一:定义 B树(B-树)是一种平衡的多路查找树。2-3树和2-3-4树都是B树的特例。节点最大的孩子数组称为B树的阶(order),因此,2-3树是3阶B树,2-3-4树是4阶B树。 (一)m阶下的B树 一棵m阶的B树满足下列条件: 1.树中每个结点至多有m个孩子。 2.除根结 阅读全文
posted @ 2018-08-20 22:42 山上有风景 阅读(2123) 评论(0) 推荐(0)
摘要:一:2-3-4树 (一)插入实现 构建一个数组为{7,1,2,5,6,9,8,4,3}的2-3-4树的过程 (二)删除实现 阅读全文
posted @ 2018-08-20 21:45 山上有风景 阅读(273) 评论(0) 推荐(1)
摘要:前提 多路查找树-B树 普通树或二叉树等一个结点只能存一个元素,比如BST、AVL、红黑等都是为了内存而设计; B树每个结点可以有n个元素和n+1个孩子,减少树的高度,减少树的度,所以可以降低内存读取外存的次数;( 对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据, 阅读全文
posted @ 2018-08-20 21:30 山上有风景 阅读(590) 评论(0) 推荐(0)
摘要:前提 我们之前的二叉排序树的插入(构建)是按照我们输入的数据来进行的,若是我们的数据分布不同,那么就会构造不同的二叉树 { 62, 88, 58, 47, 35, 73, 51, 99, 37, 93 } { 35, 37, 47, 51, 58, 62, 73, 88, 93, 99 } 我们发现 阅读全文
posted @ 2018-08-20 20:13 山上有风景 阅读(10200) 评论(1) 推荐(4)
摘要:前提 前面的查找我们都是静态查找,因为数据集是有序存放,查找的方法有多种,可以使用折半,插值,斐波那契等,但是因为有序,在插入和删除操作上的效率并不高。 这时我们就需要一种动态查找方法,既可以高效实现查找,又可以使得插入和删除效率不错,这时我们可以考虑二叉排序树 二叉排序树 一:定义 又称为二叉搜索 阅读全文
posted @ 2018-08-20 10:54 山上有风景 阅读(922) 评论(3) 推荐(1)
摘要:前提 下面我们需要了解三种线性索引索引方式:稠密索引,分块索引和倒排索引 一:稠密索引 优点 缺点 案例实现:年级最多1000个学生,现在进行稠密索引 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #in 阅读全文
posted @ 2018-08-19 10:35 山上有风景 阅读(1762) 评论(1) 推荐(1)
摘要:前提 我们下面将介绍折半查找(二分查找),插值查找,斐波那契查找 一:折半查找 (一)定义 (二)查找过程 (三)代码实现 (四)性能分析 二:插值查找(按比例查找法) (一)算法分析: 首先我们对折半公式进行改写: 通过类比,我们可以将查找的点改进为如下: (二)基本思想: (三)代码实现: (四 阅读全文
posted @ 2018-08-19 00:29 山上有风景 阅读(5093) 评论(0) 推荐(4)
摘要:一:概论(可联系数据库) (一)查找表 (二)关键字 (三)主关键字 (四)次关键字 二:查找 (一)定义 (二)分类(两大种:静态和动态) 1.静态查找表:只作查找操作的查找表 2.动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的每个数据元素 三:顺序表查找 阅读全文
posted @ 2018-08-18 20:00 山上有风景 阅读(837) 评论(0) 推荐(0)
摘要:一:定义 (一)最短时间 (二)AOE网(Activity On Edge Network) 补充:相比于AOV网 (三)关键路径 二:AOE和AOV(活动和事件|顶点与弧) AOE与AOV对比 三:四个必要参数 (一)事件最早发生时间etv(earliest time of vertex) (二) 阅读全文
posted @ 2018-08-18 19:21 山上有风景 阅读(8050) 评论(2) 推荐(8)
摘要:一:定义 (一)AOV网(Activity On Vertex) 注意(重点): (二)拓扑序列 (三)拓扑排序 二:应用 我们对一个有向图进行构造时,会出现两个结果。 补充: 三:拓扑排序算法 例如:我们将下面的AOV网转邻接表 四:代码实现 我们使用的是创建一个临时栈来存放顶点,也可以使用队列实 阅读全文
posted @ 2018-08-18 12:23 山上有风景 阅读(5815) 评论(0) 推荐(1)
摘要:一:定义 二:弗洛伊德的使用介绍 下面我们使用一个有三个顶点的图来进行讲解: (1)我们先定义两个二维数组D0[3][3]和P0[3][3] (2)处理两个数组 注意(重点): 初始化 处理后 三:弗洛伊德基本思想 核心思想是: D1[v][w] = min{D0[v][k] + D0[k][w], 阅读全文
posted @ 2018-08-18 10:00 山上有风景 阅读(20676) 评论(1) 推荐(7)
摘要:一:最短路径问题 (一)定义 在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那条路径 1.这条路径就是两点之间的最短路径 2.第一个顶点为源点 3.最后一个顶点终点 (二)分类 单源最短路径 >有权,无权 >有向,无向 从某固定源点触发,求其到所有其他顶点的最短路径 多源最短路径 求任 阅读全文
posted @ 2018-08-17 16:12 山上有风景 阅读(7542) 评论(2) 推荐(3)
摘要:一:回顾普里姆算法 数据结构(五)图 最小生成树(普里姆算法) 二:克鲁斯卡尔算法(稀疏图) 推文:https://www.cnblogs.com/qianbixin/p/5005161.html(转载自) 注意: (一)基本思想 或者 (二)难点 (三)解决思路 推文:数据结构(四)树 集合的表示 阅读全文
posted @ 2018-08-17 09:45 山上有风景 阅读(2841) 评论(2) 推荐(1)
摘要:一:集合运算 二:并查集 (一)集合并 (二)查某元素属于什么集合 S1={1,2,4,7} S2={3,5,8} S3={6,9,10} 三:查找(根)的实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h 阅读全文
posted @ 2018-08-16 23:28 山上有风景 阅读(3191) 评论(0) 推荐(2)
摘要:一:最小生成树 (一)定义 我们把构造连通网的最小代价生成树称为最小生成树或给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. (二)什么是最小生成树? 1.是一棵树 1)无回路 2)N个顶点,一定有N-1条边 2.是生成树 1)包含全部顶点 2)N-1条边 阅读全文
posted @ 2018-08-16 17:39 山上有风景 阅读(32881) 评论(5) 推荐(13)
摘要:一:深度优先遍历(邻接矩阵实现) (一)定义 (二)实现思路 (三)递归实现伪代码 (四)非递归实现伪代码 (五)代码实现(递归+非递归) 头文件 #pragma once #ifndef _STACK_H #define _STACK_H #include <stdio.h> #include < 阅读全文
posted @ 2018-08-16 13:39 山上有风景 阅读(7514) 评论(0) 推荐(2)
摘要:一:图的抽象数据类型 二:图的存储结构讨论 三:图的存储结构(1) 邻接矩阵 (一)无向图 (二)有向图 (三)网 (四)实现无向网图创建 四:图的存储结构(2) 邻接表 邻接表处理办法 (一)无向图 (二)有向图 (三)带权值的网图 (四)实现无向网图 注意:上面的两种存储结构是针对顶点,下面的三 阅读全文
posted @ 2018-08-15 14:08 山上有风景 阅读(11634) 评论(2) 推荐(20)
摘要:一:图的定义 顶点: 边: 二:有向图和无向图 无向边: 有向边: 三:简单图 四:无向完全图和有向完全图 无向完全图 有向完全图 五:稀疏图和稠密图 六:网(网络) 七:子图 八:图的顶点和边之间的关系 (一)度 无向图的度 有向图的度 (二)路径 九:连通图 连通图(无向图) 连通分量 强连通图 阅读全文
posted @ 2018-08-14 13:19 山上有风景 阅读(1707) 评论(0) 推荐(2)
摘要:哈夫曼树 (一)定义 带权路径长度WPL: 哈夫曼树(最优二叉树): (二)构造 (三)哈夫曼树特点 1.没有度为1的结点 2.n个叶子节点的哈夫曼树共有2n-1个结点 3.哈夫曼树任意非叶结点的左右子树交换后还是哈夫曼树 4.对同一组权值{w1,w2,...,wn},是会存在不同结构的哈夫曼树 哈 阅读全文
posted @ 2018-08-14 09:43 山上有风景 阅读(5238) 评论(0) 推荐(1)
摘要:(一)树转二叉树 步骤 (二)森林转二叉树 步骤 (三)二叉树转换为树 步骤 (四)二叉树转森林 步骤 (五)树的遍历 法一:先根遍历 法二:后根遍历 (六)森林的遍历 法一:前序遍历 法二:后序遍历 (七)总结 (八)代码实现:创建树,实现树转换二叉树,利用二叉树打印出树的结果 注:森林可以由树的 阅读全文
posted @ 2018-08-13 11:04 山上有风景 阅读(910) 评论(0) 推荐(0)
摘要:(一)前提 对于上面的案例:我们选用中序遍历获取结果 (二)定义 (三)二叉树线索化实现 1.创建二叉树 2.线索化二叉树 3.思考pre指针 (四)根据线索化的二叉树进行非递归遍历(遍历双向链表) (五)全部代码 阅读全文
posted @ 2018-08-13 09:44 山上有风景 阅读(737) 评论(0) 推荐(1)
摘要:(一)顺序结构创建二叉树 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> #define OK 1 #define ERROR 0 #define TRUE 1 #def 阅读全文
posted @ 2018-08-12 18:40 山上有风景 阅读(943) 评论(0) 推荐(1)
摘要:(一)定义 (二)特殊的二叉树 1.斜二叉树 或者 2.满二叉树(完美二叉树) 3.完全二叉树 (三)二叉树的几个重要性质 性质一:第i层最大结点数位2^(i-1)个,(i>=1) 性质二:深度为k的二叉树至多有2^k-1个结点 性质三:叶结点n0与度为2的结点n2的个数关系n0=n2+1 性质四: 阅读全文
posted @ 2018-08-12 12:38 山上有风景 阅读(830) 评论(0) 推荐(1)
摘要:前提 补充 (一)双亲表示法 1.结点结构 2.结点结构定义 3.优缺点分析 4.改进一:方便获取孩子结点 缺点:这样消耗了大量的空间,是不必要的, 我们尽可能使用较小的空间,所以我们一般只添加一个长子域,可以获取到有0个或1个孩子结点,甚至两个子树都可以获取,但是对于较多的孩子我们若是非得使用顺序 阅读全文
posted @ 2018-08-11 15:47 山上有风景 阅读(13689) 评论(1) 推荐(5)
摘要:(一)树定义 (二)结点分类 首先介绍一下:度 叶结点/终端结点/叶子结点 非终端结点/分支结点 内部结点 (三)结点之间的关系 (四)树的其他概念 (五)有序树和无序树 (六)森林 (七)和线性表的比较 线性表 树 (八)总结树的抽象数据类型 阅读全文
posted @ 2018-08-11 13:07 山上有风景 阅读(576) 评论(0) 推荐(0)
摘要:KMP算法实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define 阅读全文
posted @ 2018-08-10 22:52 山上有风景 阅读(759) 评论(0) 推荐(0)
摘要:(一)获取模式串T的next数组值 1.回顾 我们所知道的KMP算法next数组的作用 而KMP算法的next求值函数 2.思考 3.下面我们尝试获取下面的T串的所有next值,从中找到关联 步骤一:由上一篇博文可以知道前j1,j2前两个的next是固定值为0,1 步骤二:获取j=3时的next,此 阅读全文
posted @ 2018-08-10 18:53 山上有风景 阅读(8024) 评论(2) 推荐(5)
摘要:(一)定义 (二)KMP算法了解 1.思路启发一(避免了所有的回溯): 什么是不必要的回溯(记住重点是模式串): 下一次的匹配(从i5开始): 2.思路启发二(不必要的回溯不代表不会回溯,若是需要回溯,那么一定是不可避免的回溯) 3.思路启发三(不必要的匹配) 4.思路启发四(综合思路一和思路二和思 阅读全文
posted @ 2018-08-10 12:53 山上有风景 阅读(792) 评论(0) 推荐(2)
摘要:(一)BF算法了解 (二)算法模拟 开始匹配: (三)代码实现:前面我们实现顺序存储串的时候使用的就是BF算法 (四)性能分析 阅读全文
posted @ 2018-08-09 19:48 山上有风景 阅读(2866) 评论(0) 推荐(0)
摘要:(一)定义 (二)串的比较 (三)串的抽象数据类型 (四)串的存储结构 串同线性表:分为两种存储结构,顺序存储和链式存储 1.串的顺序存储结构 2.串的链式存储结构 3.比较 (五)代码实现(顺序结构) (六)总结 #define _CRT_SECURE_NO_WARNINGS #include < 阅读全文
posted @ 2018-08-09 16:48 山上有风景 阅读(1000) 评论(0) 推荐(0)
摘要:前提:一维数组和一维指针为什么可以替换使用? 一:二维数组的数组名代表了什么? 要是我们想要获取每一行的地址呢? 注意: 二:二级指针又代表了什么? 对于一级指针: 对于二级指针理解可以相同: *星号的理解 二:二级指针和二维数组的错误用法 原因解析: 但是当我们试图使用二级指针时: 但是会报错 原 阅读全文
posted @ 2018-08-09 10:59 山上有风景 阅读(2731) 评论(4) 推荐(7)
摘要:(0)预备知识 C语言复习 二维数组和二级指针的关系:没关系,别瞎想(重点) (一)问题描述 (二)递归代码实现 递归函数EightQueen 位置合法性noDanger 阅读全文
posted @ 2018-08-09 09:26 山上有风景 阅读(1715) 评论(0) 推荐(0)
摘要:(一)汉罗塔的了解 (二)拆分小块,分治思想 只有3个圆盘时 步骤总结 (三)代码实现 (四)解析 (五)总结 阅读全文
posted @ 2018-08-08 20:03 山上有风景 阅读(598) 评论(0) 推荐(0)
摘要:(一)递归定义 (二)斐波那契数列实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { int i; int a[40]; a[0] = 0; a[1] = 1; printf(" 阅读全文
posted @ 2018-08-08 18:28 山上有风景 阅读(854) 评论(0) 推荐(1)
摘要:(一)定义 (二)结构 (三)队列的抽象数据类型 (四)存储结构 (五)队列的链式存储结构 (六)队列的顺序存储结构(了解思想即可) (1)顺序队列:队头指针不变 (2)顺序队列:队头指针移动 (3) 顺序队列:循环队列 注意:和链队列相比 (七)实现循环队列(可以使用堆,也可以使用数组,这里直接使 阅读全文
posted @ 2018-08-08 13:48 山上有风景 阅读(524) 评论(0) 推荐(0)
摘要:栈的应用:四则运算实现 (一)预备知识 前缀、中缀、后缀表达式(逆波兰表达式) union联合体使用详解 中缀表达式 前缀表达式 后缀表达式(逆波兰表达式)<这是我们使用的> (二)中缀转后缀 例如,将中缀表达式“1+((2+3)×4)-5”转换为后缀表达式的过程如下: 因此结果为“1 2 3 + 阅读全文
posted @ 2018-08-07 23:49 山上有风景 阅读(4498) 评论(0) 推荐(3)
摘要:(一)前提 (二)链式存储结构 (三)链栈的结构体 (四)链栈的代码实现 (五)总结:和顺序栈之间的对比 使用情况选择 阅读全文
posted @ 2018-08-07 23:37 山上有风景 阅读(1885) 评论(0) 推荐(0)
摘要:(一)栈的定义 (二)栈的抽象数据类型 注意: (三)栈的顺序存储结构 (四)实现栈之前的预备知识 (1)malloc函数获取的内存,内存空间上是连续的 (2)不同类型指针的步长增长问题 (3)指针和所指向的数据中间的关系 例如:我们要获取栈顶数据11,我们就需要先将栈顶退一,然后才能读取到数据 ( 阅读全文
posted @ 2018-08-07 10:13 山上有风景 阅读(1592) 评论(0) 推荐(0)
摘要:(一)定义 (二)结点结构 (三)双向链表结构 双向循环链表 带有头结点的空链表 带有头结点的数据链表 (四)实现双向链表 (五)打印预览 (六)总结 阅读全文
posted @ 2018-08-06 12:55 山上有风景 阅读(514) 评论(0) 推荐(0)
摘要:(一)回顾所有的线性表结构 (二)是否需要头结点? Status InitList(CLinkList* L,int n) { CLinkList rear, q; //rear是尾结点 ElemType item; rear = q = NULL; srand(time(0)); for (int 阅读全文
posted @ 2018-08-06 11:55 山上有风景 阅读(294) 评论(0) 推荐(0)
摘要:(一)合并两个循环链表 (二)判断单链表中是否有环 方法一:使用两个指针,循环嵌套,A指针在外层循环,一步一步向下走,B指针在内层循环,循环到A的位置,当两者的位置相同时判断走的步数是否一致,不一致则代表有环。且能够得到准确的环路节点。其中A是要将链表从头走到尾,B是一直在内层进行循环,时间复杂度为 阅读全文
posted @ 2018-08-05 22:45 山上有风景 阅读(340) 评论(0) 推荐(0)
摘要:(一)前提 (二)实现结构 (三)代码实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define OK 1 #define ERROR 0 #define TR 阅读全文
posted @ 2018-08-05 17:05 山上有风景 阅读(971) 评论(0) 推荐(1)
摘要:(一)定义 (二)优点 (三)结构 带有头结点 不带头结点 (四)实现循环链表(使用尾指针,不带头结点) (五)优点 阅读全文
posted @ 2018-08-05 13:52 山上有风景 阅读(943) 评论(0) 推荐(0)
摘要:题目 解决思路 (一)使用一个指针,先索引一遍获取总长度,再取长度一半去循环获取到中间值 (二)使用两个指针,快指针和慢指针,快指针一次向前走2格,慢指针一次走一格,当快指针走完全程,慢指针正好走在中间 方法二:代码实现 全部代码实现 效果预览 阅读全文
posted @ 2018-08-05 10:33 山上有风景 阅读(1120) 评论(0) 推荐(0)
摘要:(一)前提 (二)静态链表的实现结构 (三)要点 (四)静态链表的实现步骤 (1)中间插入实现(将B插入A,C中间) (2)头插法插入 代码和上面一致 (3)尾插法 代码还是一致的 (五)代码实现 (六)优缺点 优点(和单链表一样) 缺点(比单链表还惨) (七)总结 (八)思考 (九)解决 阅读全文
posted @ 2018-08-04 23:49 山上有风景 阅读(667) 评论(0) 推荐(0)
摘要:(一)前提 (二)链式线性表两种结构(带有头结点和不带头结点) 不带头结点: 空链表: 带有头结点: 空链表: (三)头结点和头指针的区别 头指针: 头结点: (四)带头结点的单链表实现 1.InitList 2.1 Insert range of 5 elements by head 2.2 In 阅读全文
posted @ 2018-08-04 13:45 山上有风景 阅读(1332) 评论(0) 推荐(0)
摘要:(一)线性表的抽象数据类型定义 (二)线性表的实现 1.InitList initial List.... 2.1 ListInsert 1-10 2.2 ListInsert 5 2.3 ListInsert 19 Error ListInsert(&L, 19, 99) Error:Out of 阅读全文
posted @ 2018-08-03 22:18 山上有风景 阅读(1092) 评论(1) 推荐(0)