摘要:
第27课 - 动态类型识别 问题:下面的程序有问题吗? class Parent { public: virtual -Parent() { } }; class Child : public Parent { }; void test(Parent* p) { Child* c = (Child* 阅读全文
posted @ 2019-08-11 19:33
free-锻炼身体
阅读(179)
评论(0)
推荐(0)
摘要:
第26课 - 异常处理 - 下 1. 问题一 有时在工程中关心是否产生了异常,而不关心具体的异常类型,C++语言中可以做到吗? C++中的catch语句可以使用...捕获所有的异常。 #include <cstdlib> #include <iostream> using namespace std 阅读全文
posted @ 2019-08-11 19:32
free-锻炼身体
阅读(151)
评论(0)
推荐(0)
摘要:
第25课 - 异常处理 - 上 1. 典型问题一 所有的代码都有可能不按照预定的方式进行 double Div(double a, double b) { return a / b;} double Add(double a, double b) { return a + b;} double Mi 阅读全文
posted @ 2019-08-11 19:31
free-锻炼身体
阅读(202)
评论(0)
推荐(0)
摘要:
第24课 - 专题四经典问题解析 1. 历史的痕迹 #include <cstdlib> #include <iostream> using namespace std; template<class T> //以前是用typename定义,现在是用class定义 T Minus(T a, T b) 阅读全文
posted @ 2019-08-11 19:30
free-锻炼身体
阅读(136)
评论(0)
推荐(0)
摘要:
第23课 - STL简介 1. 标准模板SLT C++的作用就是提高程序书写的效率,那么就得代码复用。 STL,即:Standard Template(样板) Library,是C++的一部分(常用的数据结构)。STL是常用数据结构和算法的集合。STL的目标是标准化组件,提高开发效率和程序可靠性。 阅读全文
posted @ 2019-08-11 19:29
free-锻炼身体
阅读(420)
评论(0)
推荐(0)
摘要:
第22课 - 类模板 - 下 1. 类模板的局部特化 类模板可以定义多个类型参数 #include <cstdlib> #include <iostream> using namespace std; template<typename T1, typename T2> class Test { p 阅读全文
posted @ 2019-08-11 19:28
free-锻炼身体
阅读(147)
评论(0)
推荐(0)
摘要:
第21课 - 类模板 - 上 思考:类是C++的核心,那是否能够将模板的思想应用于类呢? 1. 类模板 一些类主要用于存储和组织数据元素。如:数组类,链表类,Stack类,Queue类等等。 C++中可以将模板的思想应用于类,使得类可以不关注具体所操作的数据类型,而是只关注所需要实现的功能。 C++ 阅读全文
posted @ 2019-08-11 19:20
free-锻炼身体
阅读(143)
评论(0)
推荐(0)
摘要:
第20课 - 函数模板 1. C++中如何交换两个变量的值? void Swap(int& a, int& b) { int t = a; a = b; b = t; } void Swap(float& a, float& b) { float t = a; a = b; b = t; } voi 阅读全文
posted @ 2019-08-11 19:19
free-锻炼身体
阅读(177)
评论(0)
推荐(0)
摘要:
第19课 - 专题三经典问题解析 1. 当多态遇见对象数组会发生什么? #include <cstdlib> #include <iostream> using namespace std; class Parent { protected: int i; public: virtual void 阅读全文
posted @ 2019-08-11 19:18
free-锻炼身体
阅读(146)
评论(0)
推荐(0)
摘要:
第18课 - 继承与多态 - 下 问: 重载和重写有什么区别?什么时候是重载,什么时候是重写? 1. 重载与重写 下面程序的继承方式有问题吗,为什么? #include <cstdlib> #include <iostream> using namespace std; class Parent { 阅读全文
posted @ 2019-08-11 19:17
free-锻炼身体
阅读(121)
评论(0)
推荐(0)
摘要:
第17课 - 继承与多态 - 上 引入: 如果子类定义了与父类中原型相同的函数会发生什么? 1. 函数重写 在子类中定义与父类中原型相同的函数,函数重写只发生在父类与子类之间。 父类中被重写的函数依然会继承给子类,默认情况下子类中重写的函数将隐藏父类中的函数,通过作用域分辨符::可以访问到父类中被隐 阅读全文
posted @ 2019-08-11 19:16
free-锻炼身体
阅读(164)
评论(0)
推荐(0)
摘要:
第16课 - 继承中的构造与析构 1. 赋值兼容性原则 (1) 子类对象可以当作父类对象使用。 (2) 子类对象可以直接赋值给父类对象。 (3) 子类对象可以直接初始化父类对象。 (4) 父类指针可以直接指向子类对象。 (5) 父类引用可以直接引用子类对象。 子类就是特殊的父类 #include < 阅读全文
posted @ 2019-08-11 19:15
free-锻炼身体
阅读(189)
评论(0)
推荐(0)
摘要:
第15课 - 惊艳的继承 1. 继承的概念 面向对象中的继承指类之间的父子关系,子类拥有父类的所有成员变量和成员函数。子类就是一种特殊的父类,子类对象可以当作父类对象使用,子类可以拥有父类没有的方法和属性。 如下面的程序: #include <cstdlib> #include <iostream> 阅读全文
posted @ 2019-08-11 19:14
free-锻炼身体
阅读(125)
评论(0)
推荐(0)
摘要:
第14课 - 专题二经典问题解析 1. malloc与free和new与delete有什么区别? malloc和free是函数,new和delete是关键字。 #include <cstdlib> #include <iostream> using namespace std; class Test 阅读全文
posted @ 2019-08-11 19:13
free-锻炼身体
阅读(159)
评论(0)
推荐(0)
摘要:
第13课 - 操作符重载 - 下 思考: 通过operator关键字能够将操作符定义为全局函数,操作符重载的本质就是函数重载。类的成员函数是否可以作为操作符重载的函数? 1. operator+的成员函数实现 #include <cstdlib> #include <iostream> using 阅读全文
posted @ 2019-08-11 19:12
free-锻炼身体
阅读(172)
评论(0)
推荐(0)
摘要:
第12课 - 操作符重载 - 上 1. 使用C++标准库 C++标准库并不是C++语言的一部分。C++标准库是由C++语言编写而成的类库和函数的集合。C++标准库中定义的类和对象都位于std命名空间中。C++标准库的头文件都不带.h后缀。C++标准库涵盖了C库的功能。C库中<name.h>头文件对应 阅读全文
posted @ 2019-08-11 19:11
free-锻炼身体
阅读(211)
评论(0)
推荐(0)
摘要:
第11课 - 类的静态成员 1. 成员变量的回顾 通过对象名能够访问public成员变量。 每个对象都可以有只属于自己的成员变量。 成员变量不能在对象之间共享。 2. 新的需求 统计类在程序运行期间有多少个对象同时存在;保证程序的安全性,并随时可以获取对象的数目。 3. 类的静态成员 在C++中可以 阅读全文
posted @ 2019-08-11 19:10
free-锻炼身体
阅读(400)
评论(0)
推荐(0)
摘要:
第10课 - 构造与析构 - 下 1. C++中的对象组合 C++中提供了初始化列表对成员变量进行初始化 语法规则: Constructor::Contructor() : m1(v1), m2(v1,v2), m3(v3) { // some other assignment operation 阅读全文
posted @ 2019-08-11 19:09
free-锻炼身体
阅读(160)
评论(0)
推荐(0)
摘要:
第9课 - 构造与析构 - 上 1. 对象的初始化 生活中存在的对象都是被初始化后才上市的,初始状态是对象普遍存在的一个状态的。一般而言所有的对象都需要一个确定的初始状态。 解决方案: 为每个类都提供一个public的initialize函数;对象创建后立即调用initialize函数进行初始化。 阅读全文
posted @ 2019-08-11 19:08
free-锻炼身体
阅读(133)
评论(0)
推荐(0)
摘要:
第8课 - 类中的封装 1. 类的组成 类的实现细节; 类的使用方式。 当使用类时,不需要关心其实现细节;当创建一个类时,才需要考虑其内部实现细节。 例: 使用手机时,只需要知道如何发短信,打电话,拍照等等即可,不需要关心手机是如何开发出来的。 手机开发工程师就需要考虑手机内部的实现细节,如硬件细节 阅读全文
posted @ 2019-08-11 19:07
free-锻炼身体
阅读(293)
评论(0)
推荐(0)
摘要:
第7课 - 面向对象基本概念 1. 基本概念 类和对象是面向对象中的两个基本概念。“类”指的是一类事物,是一个抽象概念。“对象”指的是属于某个类的一个实体,是一个具体存在的事物。 类是一种“模板”,可以通过这种模板创建出不同的对象“实例”。对象“实例”是类“模板”的一个具体体现。一个类可以有很多对象 阅读全文
posted @ 2019-08-11 19:06
free-锻炼身体
阅读(410)
评论(0)
推荐(0)
摘要:
第6课 - 专题一经典问题解析 1. const和引用的疑惑 #include <stdio.h> int main() { const int x = 1; const int& rx = x; int& nrx = const_cast<int&>(rx); nrx = 5; printf("x 阅读全文
posted @ 2019-08-11 19:05
free-锻炼身体
阅读(112)
评论(0)
推荐(0)
摘要:
第5课 - 新的关键字 1. 动态内存分配 C++中通过new关键字进行动态内存申请,C++中的动态内存申请是基于类型进行的,delete关键字用于内存释放。 变量申请: Type* pointer = new Type; //...... delete pointer; 数组申请: Type* p 阅读全文
posted @ 2019-08-11 19:04
free-锻炼身体
阅读(286)
评论(0)
推荐(0)
摘要:
第4课 - 函数的升级-下 1. 重载的概念 同一个标示符在不同的上下文有不同的意义。 2. 函数的重载 用同一个函数名定义不同的函数,当函数名和不同的参数搭配的时候函数的含义不同。 int func(int x) //一个int参数 { return x; } int func(int a, in 阅读全文
posted @ 2019-08-11 19:03
free-锻炼身体
阅读(159)
评论(0)
推荐(0)
摘要:
第3课 - 函数的升级-上 1. 常量与宏回顾 C++中能够的const常量可以代替宏常数定义,如: const int A = 3; #define A 3 在C++中的解决方案是代替宏代码片段,宏代替代码片段可以避免宏的副作用。 2. 内联函数 (1)C++中推荐使用内联函数代替宏代码片段。C+ 阅读全文
posted @ 2019-08-11 19:02
free-锻炼身体
阅读(140)
评论(0)
推荐(0)
摘要:
第2课 - C++中的引用 1. C++中的布尔类型 C++在C语言的基本类型系统之上增加了bool。C++中的bool可以取得值只有true和false,true代表真值,编译器内部用1来表示;false代表非真值,编译器内部用0来表示。理论上的bool只占用一个字节。 如果多个bool变量定义在 阅读全文
posted @ 2019-08-11 19:01
free-锻炼身体
阅读(278)
评论(0)
推荐(0)
摘要:
第1课 - C到C++的升级 1. C与C++的关系 (1) C++继承了所有的C特性。 (2) C++在C的基础上提供了更多的语法和特性。 (3) C++的设计目标是运行效率和开发效率的统一。 l C++以C语言为基础,面向对象支持,类型加强,函数加强,异常处理。 2. C++对C的加强 (1)C 阅读全文
posted @ 2019-08-11 19:00
free-锻炼身体
阅读(179)
评论(0)
推荐(0)
摘要:
第0课 - 学习C++的意义 1. C语言的特点 C语言是在实践的过程中逐步完善起来的。没有深思熟虑的过程,使用的时候有很多的灰色地带;残留了太多低级语言的特征,直接利用指针进行内存操作。C语言的目标是高效。 2. 软件方法论的发展 l 面向过程程序设计:数据结构 + 算法。 主要解决科学计算问题, 阅读全文
posted @ 2019-08-11 18:59
free-锻炼身体
阅读(147)
评论(0)
推荐(0)
摘要:
第53课 - 扩展学习 1. 字符串 字符串是由零个或多个字符组成的有限序列 l 字符串的存储结构 l 字符串的比较操作 l 字符串的模式匹配 l 字符串数据类型 2. 更多品种的树 平衡二叉树(AVL树) 一种二叉排序树,其中每一个结点的左右子树的高度差至多为1。 多路查找树(B树) 每一个结点的 阅读全文
posted @ 2019-08-11 18:57
free-锻炼身体
阅读(105)
评论(0)
推荐(0)
摘要:
第52课 - 哈希表及其实现 1. 哈希的定义 在数据元素的存储位置和它的关键字之间建立一个映射关系f,通过f可以直接得到关键字所代表的数据元素. 2. 哈希表 哈希技术中用于存储数据元素的数据结构。 3. 哈希函数 哈希技术中的映射关系f。 4. 关键特点 哈希表: • 哈希技术需要具体的数据结构 阅读全文
posted @ 2019-08-11 18:56
free-锻炼身体
阅读(172)
评论(0)
推荐(0)
摘要:
第51课 - 二叉排序树 1. 二分查找的回顾 (1)二分查找的特点 二分查找能够提高有序表中数据元素的查找速度。 二分查找的时间复杂度为O(log2n)。 二分查找是一种静态查找。 (2)二分查找的不足 当查找表经常变化时,二分查找的整体性能急剧下降。 2. 二分查找的硬伤 二分查找基于有序表。 阅读全文
posted @ 2019-08-11 18:55
free-锻炼身体
阅读(326)
评论(0)
推荐(0)
摘要:
第50课 - 基础查找课后练习 1. 在一个整型数组中所有的值都是成对出现的,唯独有一个值只出现了一次。设计一个算法查找出这个唯一不成对的值。 如:{1,1,2,3,2,3,4,4,6,5,7,5,6,7,10},设计算法以最快的速度查找不成对的10 2. 在一个有N个元素的整型数组中,保存着从1到 阅读全文
posted @ 2019-08-11 18:53
free-锻炼身体
阅读(95)
评论(0)
推荐(0)
摘要:
第48课 - 顺序表和有序表查找 1. 顺序表查找 从线性表中的第一个(或最后一个)数据元素开始,逐个进行数据元素关键字和给定值的比较,若某个数据元素的关键字和给定值相等则查找成功;如果直到最后一个(或第一个)数据元素,其关键字和给定值都不等时,则查找失败。 2. 二分查找 基本思想。 首先将查找表 阅读全文
posted @ 2019-08-11 18:52
free-锻炼身体
阅读(411)
评论(0)
推荐(0)
摘要:
第49课 - 线性索引查找 1. 索引的概念 索引是把一个关键字与它对应的记录相关联的过程。索引由若干个索引项构成,每个索引项包括关键字和其对应记录的位置,索引技术是组织大型数据库以及磁盘文件的重要技术。 线性索引:将索引项组织成线性结构。 非线性索引:将索引项组织成树形结构或图形结构。 2. 线性 阅读全文
posted @ 2019-08-11 18:52
free-锻炼身体
阅读(177)
评论(0)
推荐(0)
摘要:
第46课 - 图算法课后练习 1. 编程实现Kruskal最小连通网算法并分析时间复杂度。 2. 改进Dijkstra最短路程算法,使其能够找到源点到各顶点间的所有的最短路径,而不只是一条最短路径。 阅读全文
posted @ 2019-08-11 18:51
free-锻炼身体
阅读(105)
评论(0)
推荐(0)
摘要:
第47课 - 查找的概念 1. 查找的定义 (1) 查找表是由同一类型的数据元素构成的集合。 (2) 查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。 注意: l 从逻辑意义上来说,查找表中的数据元素之间没有本质的关系。 l 查找表可以不是线性表,树结束和图结构的任意一种。 阅读全文
posted @ 2019-08-11 18:51
free-锻炼身体
阅读(469)
评论(0)
推荐(0)
摘要:
第45课 - 最短路径 1. 最短路径 如果从有向图中某一顶点(称为源点)到达零一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小。 问题解决: 单源最短路径问题:Dijkstra算法。 所有顶点之间的最短路径:Floyd算法。 2. 问题分析 问题的提法: 阅读全文
posted @ 2019-08-11 18:50
free-锻炼身体
阅读(198)
评论(0)
推荐(0)
摘要:
第44课 - 最小连通网 1. 运营商的挑战 在下图标出的城市之间架设一条通信线路。 要求:任意两个城市间能够通信,将架设成本降至最低。 2. 问题的提出 如何在图中选择n-1条表使得n个顶点间两两可达,使得这n-1条边的权值之和最小。 (1) 必须使用且仅使用该网络中的n-1条边来连接网络中的n个 阅读全文
posted @ 2019-08-11 18:49
free-锻炼身体
阅读(203)
评论(0)
推荐(0)
摘要:
第42课 - 图的遍历 1. 图的遍历 从图的某一个顶点出发,沿着一些边访问图中所有的顶点,使得每个顶点仅被访问一次。 2. 分类 深度优先搜索DFS(Depth First Search) 广度优先搜索BFS(Breadth First Search) 3. 深度优先遍历 访问起始顶点v,当v还有 阅读全文
posted @ 2019-08-11 18:48
free-锻炼身体
阅读(150)
评论(0)
推荐(0)
摘要:
第43课 - 图课后练习 1. 将深度优先遍历算法用非递归的方式实现 要求: 在邻接矩阵存储结构图中实现。 在邻接链表存储结构图中实现。 比较分析非递归深度优先算法与广度优先算法的异同。 阅读全文
posted @ 2019-08-11 18:48
free-锻炼身体
阅读(104)
评论(0)
推荐(0)
摘要:
第40课 - 图的定义 1. 定义 图是由定点集合(Vertex)以及顶点间的关系集合组成的一种数据结构:Graph = (V, E) V = { x|x属于某个数据对象}是顶点的有穷费控集合;E = {(x,y)|x,y属于V }是顶点之间关系的有穷集合,也叫做边(Edge)集合。 2. 图的定义 阅读全文
posted @ 2019-08-11 18:46
free-锻炼身体
阅读(345)
评论(0)
推荐(0)
摘要:
第41棵 - 图的存储结构 1. 邻接矩阵法 用一维数组存储顶点--描述顶点相关的数据。 用二维数组存储边--描述顶点的边。 设图A = (V,E)是一个有n个顶点的图,图的邻接矩阵为Edge[n][n],则:Edge[i][j] = W,W>0,i和j连接;Edge[i][j] = 0,i == 阅读全文
posted @ 2019-08-11 18:46
free-锻炼身体
阅读(116)
评论(0)
推荐(0)
摘要:
第39课 - 二叉树课后练习 1. 输的相等比较(去世科技笔试题) 编写一个函数用于比较两棵二叉树是否相等。(二叉树相等指的是两棵树中的结点在位置上相互对应,且对应位置上保存的数据相同。) 函数原型如下: int compare_bin_tree(RTreeNode* bt1, BTreeNode* 阅读全文
posted @ 2019-08-11 18:45
free-锻炼身体
阅读(119)
评论(0)
推荐(0)
摘要:
第37课 - 线索化二叉树 1. 问题 在一些项目中需要频繁的遍历二叉树,但是二叉树的遍历比单链表的遍历复杂多了,并且递归总是会后额外的开销。 2. 线索化二叉树 线索化二叉树指的是将二叉树中的结点进行逻辑意义上的“重新排列”,使其可以线性的方式访问每一个结点。 二叉树线索化后每个结点都有一个线性下 阅读全文
posted @ 2019-08-11 18:44
free-锻炼身体
阅读(161)
评论(0)
推荐(0)
摘要:
第38课 - 霍夫曼树 1. 最初的解决方案 对于文本“BADCADFEED”的传输而言,因为重复出现的只有“ABCDEF”这六个字符,因此可以用下面的方式编码: A B C D E F 000 001 010 011 100 101 接收方可以根据每3个bit进行一次字符解码的方式还原文本信息。 阅读全文
posted @ 2019-08-11 18:44
free-锻炼身体
阅读(149)
评论(0)
推荐(0)
摘要:
第36课 - 遍历二叉树 1. 什么是遍历 单链表的遍历是指从第一个节点开始(下标为0的结点),按照某种次序一次访问每一个结点。 二叉树的遍历是指从根节点开始,按照某种次序一次访问二叉树中的所有结点。 2. 前序遍历 若二叉树为空:空操作返回。 若二叉树不为空:访问根节点中的数据,前序遍历左子树,前 阅读全文
posted @ 2019-08-11 18:43
free-锻炼身体
阅读(143)
评论(0)
推荐(0)
摘要:
第35课 - 创建二叉树 1. 指路法定位结点 从根节点开始。。。 结点1的位置:{NUll} 结点2的位置:{左} 结点3的位置:{右} 结点4的位置:{左,左} 结点5的位置:{左,右} 结点6的位置:{右,左} 结点7的位置:{右,右} 结点8的位置:{左,左,左} 结点9的位置:{左,左,右 阅读全文
posted @ 2019-08-11 18:42
free-锻炼身体
阅读(196)
评论(0)
推荐(0)
摘要:
第34课 - 二叉树的深层性质 1. 性质1 在二叉树的第i层最多有2i-1个结点。(i>= 1) 第一层最多有21-1=1个结点。 第二层最多有22-1=2个结点。 第三层最多有23-1=4个结点。 2. 性质2 深度为 kkk 的二叉树最多有 222kkk 111个结点。(k ≥ 0)0)0) 阅读全文
posted @ 2019-08-11 18:41
free-锻炼身体
阅读(173)
评论(0)
推荐(0)
摘要:
第33课 - 树课后练习 1. GTree添加一个查找函数 int GTee_Search(GTree* tree, GTreeData* data, GTree_Printf* PFunc); 参数: tree ––– 通用树指针。 data ––– 指向用户数据的指针。 pFunc ––– 打印 阅读全文
posted @ 2019-08-11 18:40
free-锻炼身体
阅读(174)
评论(1)
推荐(0)
摘要:
第32课 -二叉树的定义 1. 通用树结构的回顾 通用树结构是采用双亲孩子表示法模型建立的,每个结点都有一个指向其双亲的指针;每个结点都有若干个指向其孩子的指针。 2. 另一种模型 孩子兄弟表示法模型:每个结点都有一个指向其第一个孩子的指针;每个结点都有一个指向其第一个右兄弟的指针。 3. 孩子兄弟 阅读全文
posted @ 2019-08-11 18:39
free-锻炼身体
阅读(242)
评论(0)
推荐(0)
摘要:
第30课 - 树的定义 1. 定义 树是一种非线性的数据结构,树是由n(>=0)个结点组成的有限集合。 如果n = 0,称为空树; 如果n > 0,则有一个称之为根(root)的结点,它只有直接后继,但是没有直接前驱;除了根以外其他的结点划分为m(m>=0)个互不相交的有限集合T0,T1,T2,.. 阅读全文
posted @ 2019-08-11 18:38
free-锻炼身体
阅读(317)
评论(0)
推荐(0)
摘要:
第31课 - 树的存储结构 小B:线性表可以直接利用内存线性的特性用数组实现树结构是非线性的,肯定不能用数组直接实现吧? 小A:我觉得链式结构应该可以实现树,但是树中每个结点的孩子又是数目不定的,该如何定义呢? 小C:我觉得是不是先定义好结点间的关系,再设计结构体呢? 小D:真的很难哦。 1. 树的 阅读全文
posted @ 2019-08-11 18:38
free-锻炼身体
阅读(158)
评论(0)
推荐(0)
摘要:
第29课 - 排序课后练习 1. 根据动画课件独立实现对应的排序算法。 2. 希尔排序分组后,使用插入排序分别对不同的组进行排序。 考虑:是否可以用冒泡排序对不同的组进行排序,且当分组参数收敛到1时,整个排序也能成功排序。 如果可以,请实现这个排序算法。 如果不行,请说明原因。 阅读全文
posted @ 2019-08-11 18:37
free-锻炼身体
阅读(91)
评论(0)
推荐(0)
摘要:
第28课 - 进阶星移 1. 希尔排列 将待排序列划分为若干个组,在每一个组内进行插入排序,一整个序列基本有序,后再对整个序列进行插入排列。 例如:将n个数据元素分成d个子序。 { R[1],R[1+d],R[1+2d],…,R[1+kd] }。 { R[2],R[2+d],R[2+2d],…,R[ 阅读全文
posted @ 2019-08-11 18:36
free-锻炼身体
阅读(149)
评论(0)
推荐(0)
摘要:
第27课 - 初始斗转 1. 选择排序 每一次选出前面的元素最小的元素作为第i个元素。 程序: #include <stdio.h> void println(int array[], int len) { int i = 0; for(i=0; i<len; i++) { printf("%d " 阅读全文
posted @ 2019-08-11 18:35
free-锻炼身体
阅读(174)
评论(0)
推荐(0)
摘要:
第26课 - 排序的概念及分类 疑问:既然已经存在的排序算法基本上都有现成的实现了。我们需要的时候直接调用就可以了,为什么还要学习呢?你不是说要代码复用吗? 1. 排序的一般定义 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素。 例如: 将下列关键字序列: 阅读全文
posted @ 2019-08-11 18:34
free-锻炼身体
阅读(873)
评论(0)
推荐(0)
摘要:
第25课 - 队列课后练习 为本专题中实现的队列添加MaxAddress()操作。 该操作返回队列中存储的最大地址值。 分析对比哪种队列实现方式的MaxAddress() 效率效率最好?是否有更高效的方法? 两个栈可以实现队列,那么反过来,两个队列是否可以实现栈呢? 如果不可以,请说明原因。 如果可 阅读全文
posted @ 2019-08-11 18:33
free-锻炼身体
阅读(115)
评论(0)
推荐(0)
摘要:
第23课 - 队列的优化实现 1. 顺序队列的瓶颈 顺序队列 线性表的第一个元素作为队头。 线性表的最后一个元素作为队尾。 入队的新元素是线性表的最后,时间复杂度为O(1)。 出队列时需要将后续的所有元素向前移动,时间复杂度是O(n)。 2. 顺序队列的优化方案 (1)定义front使其始终代表队头 阅读全文
posted @ 2019-08-11 18:32
free-锻炼身体
阅读(129)
评论(0)
推荐(0)
摘要:
第24课 - 队列的特别实现 讨论: A: 重新实现的方式确实提高了顺序队列和链式队列的效率,可是实现过程还是比较复杂的。 B: 这也是没有办法的事,直接复用链表虽然可以实现队列,但是效率不好。 C: 有没有既能复用之前的代码,又能高效实现队列。 1. 思路 准备两个栈用于实现队列:inStack和 阅读全文
posted @ 2019-08-11 18:32
free-锻炼身体
阅读(131)
评论(0)
推荐(0)

浙公网安备 33010602011771号