01 2019 档案
摘要:一、什么是平衡二叉树? 平衡二叉树 (Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉排序树退化成链表的问题,把插入,查找,删除的时间
阅读全文
摘要:一、什么是二叉排序树? 对于 普通的顺序存储 来说, 插入、删除操作很简便,效率高 ;而这样的表由于 无序 造成 查找的效率很低 。 对于 有序线性表 来说(顺序存储的), 查找 可用折半、插值、斐波那契等查找算法实现, 效率高 ;而因为要 保持有序 ,在 插入和删除时不得不耗费大量的时间 。 那么
阅读全文
摘要:一、什么是二叉树? 1.1 定义 二叉树 ,是度为二的树,二叉树的每一个节点最多只有二个子节点,且两个子节点有序。 1.2 二叉树的重要特性 (1)二叉树的第 i 层上节点数最多为 2n 1; (2)高度为 k 的二叉树中,最多有 2k 1个节点; (3)在任意一棵二叉树中,如果终端节点的度为 n,
阅读全文
摘要:一、树的定义 1.1 定义 树(Tree)是 n(n =0) 个结点的有限集。 n=0 时称为 空树 。在任意一棵非空树中,有且仅有一个特定的称为 根 的结点。当 n 1 时,其余结点可分为 m (m 0) 个互不相交的有限集 T1、T2、……、Tm。其中每一个集合本身又是一棵树,并且称为根的 子树
阅读全文
摘要:一、什么是链队列? 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列。 为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向尾结点,如下图所示: 空队列时,front和rear都指向头结点,如下图所示。 链队列的结构为: 二、基本操作 2.1
阅读全文
摘要:一、什么是顺序队列? 队列的 顺序储存结构 :用数组存储队列,为了避免当只有一个元素时,队头和队尾重合使得处理变得麻烦,所以引入两个指针:front 指针指向队头元素,rear 指针指向队尾元素的下一个位置,当 front=rear 时,为空队列,结构如下图所示: 顺序队列的结构代码如下: 假设是长
阅读全文
摘要:一、什么是链栈? 链栈:是指利用链式存储结构实现的栈。 想想看栈只是栈顶来做插入和删除操作,栈顶放在链栈的头部还是尾部呢?由于单链表有头指针,而栈顶指针也是必须的,那干吗不让它俩合二为一呢,所以比较好的办法是把栈顶放在链栈的头部(如下图所示)。另外,都已经有了栈顶在头部了,单链表中比较常用的头结点也
阅读全文
摘要:一、什么是栈? 在我们软件应用中,栈这种后进先出数据结构的应用是非常普遍的。比如 Word、 Photoshop 等文档或图像编辑软件中, 都有撤销(undo)的操作,也是用栈这种方式来实现的。 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 我们把 允许插入和删除的一端称为栈顶(top
阅读全文
摘要:一、类定义 单链表类的定义如下: 二、构造函数 为头结点 申请内存,数据域置为 0,指针域指向空。 三、析构函数 调用清空单链表方法,并且销毁头结点。 四、清空链表操作 循环销毁除头结点外的各结点。 清空链表和析构函数的区别 :清空链表是循环销毁除头结点外的各结点,析构函数是销毁所有结点,包括头结点
阅读全文
摘要:一、类定义 顺序表类的定义如下: 二、构造函数 传入用户指定的容量参数赋值给 ,声明指针 指向 数组, 置0。 三、析构函数 在析构函数中释放顺序表指针申请的内存空间,并指向 避免成为野指针。 四、判空和获取顺序表长度操作 等于 0 则表示顺序表未空;返回 获取长度。 五、获取元素操作 先判断顺序表
阅读全文
摘要:一、什么是双向链表? 双向链表(double linked list)是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。所以在双向链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱。 既然单链表也可以有循环链表,那么双向链表当然也可以是循环表。 线性表的双向链表存储结构如下:
阅读全文
摘要:一、什么是循环链表? 将单链表中终端结点的指针端自空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为 单循环链表 ,简称 循环链表 (circular linked list)。 相比单链表,循环链表解决了一个很麻烦的问题。 即可以从任意一个结点出发,而不一定是要从头结点出发,
阅读全文
摘要:一、什么是单链表? 单链表:使用链式存储结构的线性表。单链表中的数据是以结点来表示的,每个结点的构成:数据域(数据元素的映像) + 指针域(指示后继元素存储位置)。如果单链表不做特别说明,一般指的是 动态 单链表。 在 C 语言中可用结构指针来描述单链表: 从这个结构定义中可以看出, 结点由存放数据
阅读全文
摘要:一、什么是顺序表? 使用 顺序存储方式 的顺序表即为 顺序表 ,存取时间性能为 ,示意图如下所示: 二、顺序表的基本操作(用静态数组实现) 在编写顺序表的基本操作函数前,有几个注意点: 插入操作中,需考虑顺序表已满的情况,删除、获取操作中,需考虑顺序表为空的情况; 在各操作中,当涉及到位置 时,都应
阅读全文
摘要:线性表是数据结构中最常用和最简单的一种结构。 一、线性表的定义 线性表,从名字上你就能感觉到,是具有像线一样的性质的表。例如一个班级的小朋友,一个跟着一个排着队,有一个打头,有一个收尾,当中的小朋友每一个都知道他前面一个是谁,他后面一个是谁,这样如同有一根线把他们串联起来了,就可以称之为线性表。 线
阅读全文
摘要:在《数据结构》课程中,谈到算法是为了帮助理解好数据结构,并不会详细谈及算法的方方面面。 算法:算法是解决特定问题求解步骤的描述, 在计算机中表现为指令的有限序列, 并且每条指令表示一个或多个操作。 1 两种算法的比较 现在要求你写一个求 1+2+3+……+100 结果的程序,你应该怎么写呢? 大多数
阅读全文
摘要:1 数据结构有什么用? 先思考这个问题,假如你开发一个客服电话系统,其中有一个菜单排队模块,功能主要是要设计一张客户排队表,每有一个客户来电,就需要添加记录客户的编号、姓名、电话等信息,并能够实现查询和删除,你将如何设计这张客户排队表? 这时候就要用到数据结构了,一般最先想到的就是使用数组,但是实际
阅读全文
摘要:重载,覆盖(重写),隐藏(重定义) 这几个名词看着好像很像,不过其实差别很大! 一、重载 (1) 概念: 在同一个作用域内;函数名相同,参数列表不同(参数 个数不同 ,或者参数 类型不同 ,或者 参数个数和参数类型都不同 ),返回值类型可相同也可不同;这种情况叫做c++的重载! (2) 特征: 在同
阅读全文
摘要:以下分析一下,声明对象指针,调用构造、析构函数的多种情况,先定义以下的一个基类与派生类。 c++ CBase CBase1 = NULL; / 输出结果: (NULL) / c++ CBase pCBase = new CDerived(); delete pCBase; / 输出结果: CBase
阅读全文
摘要:一、概述 STL算法部分主要由头文件 \,\,\ 组成。要使用 STL中的算法函数必须包含头文件 \,对于数值算法须包含 \,\ 中则定义了一些模板类,用来声明函数对象。 二、常用算法介绍 STL 中算法大致分为四类: 非可变序列算法:指不直接修改其所操作的容器内容的算法。 可变序列算法:指可以修改
阅读全文
摘要:一、概述 map 由红黑树实现,其元素都是 “键值/实值” 所形成的一个对组(key/value pairs)。每个元素有一个键,是排序准则的基础。每一个键只能出现一次,不允许重复。 map主要用于资料一对一映射的情况,map 内部自建一颗红黑树,这颗树具有对数据自动排序的功能,所以在 map 内部
阅读全文
摘要:一、概述 set 容器内的元素会被自动排序,set 与 map 不同,set 中的元素即是键值又是实值,set 不允许两个元素有相同的键值。不能通过 set 的迭代器去修改 set 元素,原因是修改元素会破坏 set 组织。当对容器中的元素进行插入或者删除时,操作之前的所有迭代器在操作之后依然有效。
阅读全文
摘要:一、概述 list 由双向链表(doubly linked list)实现而成,元素也存放在堆中,每个元素都是放在一块内存中,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供 [] 操作符的重载。但是由于链表的特点,它可以很有效率的支持任
阅读全文
摘要:一、概述 deque(双端队列)是由一段一段的定量连续空间构成,可以向两端发展,因此不论在尾部或头部安插元素都十分迅速。 在中间部分安插元素则比较费时,因为必须移动其它元素。 二、定义及初始化 使用之前必须加相应容器的头文件: #include <deque> // deque属于std命名域的,因
阅读全文
摘要:一、概述 vector(向量): 是一种序列式容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组(动态数组),它的随机访问快,在中间插入和删除慢,但在末端插入和删除快
阅读全文
摘要:一、迭代器(iterator)介绍 指针可以用来遍历 存储空间 连续的数据结构,但是对于存储空间非连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。因此,我们引入迭代器概念。 迭代器(Iterator)是一种检查容器内元素并遍历元素的数据类型。迭代器是指针的泛化,它允许程序员用相
阅读全文
摘要:一、什么是STL? 1、STL(Standard Template Library),即标准模板库,是一个高效的C++程序库,包含了诸多常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。 2、从逻辑层次来看,在STL中体现了泛型化程序设计的思想(
阅读全文
摘要:一、C++中的命名空间 C++中使用命名空间来解决在相同文件或范围的同名变量问题,示例程序如下: c++ int main() { if 0 //第1种:直接声明使用 std::cout 三、自动类型转换的四种情况 在C/C++中有以下四种情况会发生自动类型转换: c++ int a; int &r
阅读全文
摘要:一、创建 Qt Quick 项目并运行 下面介绍如何从零创建一个 Qt Quick 项目,假如你已经很熟悉了,可以跳过。 首先,打开 Qt Creator,点击 “文件(F)” 菜单,在弹出的菜单列表中选择 “新建文件或项目(N)”,会弹出新建项目界面,这里选择 “ Qt Quick Applica
阅读全文
摘要:1 HTML 简介 下面解释什么是HTML,以及HTML标签和HTML文档的含义。 1.1 什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 ( H yper T ext M arkup L anguage) HTML 不是一种编程语言,而是一种 标记语言 (
阅读全文
摘要:一、什么是 QML? QML 是一种用户界面规范和编程语言。它允许开发人员和设计师创建高性能、流畅的动画和视觉吸引人的应用程序。QML 提供了一种高度可读、声明性、类似 JSON 的语法,支持与动态属性绑定相结合的命令式 JavaScript 表达式。 QML 全称:Qt Meta Language
阅读全文

浙公网安备 33010602011771号