2020年10月30日
本文主要介绍C++中的重载操作符(operator)的相关知识。1. 概述 1.1 whatoperator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理解时可将operator和运算符(如operator=)视为一个函数名。使用operator重载运算符,是C++扩展运算符功能的方法。使用operator扩展运算符功能的原因如下: 使重载后的运算符的使用方法与重载前一致扩展运算符的功能只能通过函数的方式实现(实际上,C++中各种
2020年10月17日
可以指向,但是无法使用不存在于基类只存在于派生类的元素。(所以我们需要虚函数和纯虚函数)原因是这样的:在内存中,一个基类类型的指针是覆盖N个单位长度的内存空间。当其指向派生类的时候,由于派生类元素在内存中堆放是:前N个是基类的元素,N之后的是派生类的元素。于是基类的指针就可以访问到基类也有的元素了,但是此时无法访问到派生类(就是N之后)的元素。基类指针可以指向派生类对象而派生类指针不可以指向基类对象同理派生类可以为基类赋值,而基类不能给派生类赋值
2020年10月14日
现在有一棵二叉树查找树如下: 如果我们需要删除一个结点,而且在删除之后,依然满足二叉查找树的数据排序策略。此时删除操作可分为一下三种情况。如下情况1:结点没有左子树 如图:一棵没有左子树的二叉树 如果在此情况下删除结点,按照结点的位置又可以分为三种处理方式。如下删除根结点:删除根结点也就是删除结点 5,此时只需将根结点指针指向其右子树结点。如下图 删除叶子结点:如果删除的结点是叶子结点也就是结点9,此时只需将父节点指向NULL,如下
2020年10月14日
根据完全二叉树的bai性质,如果du第5层结点最多为2的4次共16个,显然不满zhi,第4层是8个结点,有三个dao结点度为2个点(第5层6个,第四层出发的点3个度为2的结点就是6个),其他为叶子结点,所以可以看出叶子个数是:第5层的6个叶子结点 + 第4层5个(8-3),总共11个叶子结点。
2020年10月13日
在学习堆排序之前,首先需要了解堆的含义:在含有 n 个元素的序列中,如果序列中的元素满足下面其中一种关系时,此序列可以称之为堆。ki ≤ k2i 且 ki ≤ k2i+1(在 n 个记录的范围内,第 i 个关键字的值小于第 2*i 个关键字,同时也小于第 2*i+1 个关键字)ki ≥ k2i 且 ki ≥ k2i+1(在 n 个记录的范围内,第 i 个关键字的值大于第 2*i 个关键字,同时也大于第 2*i+1 个关键字)对于堆的定义
2020年10月13日
概要本章介绍排序算法中的希尔排序。内容包括:1. 希尔排序介绍2. 希尔排序图文说明3. 希尔排序的时间复杂度和稳定性4. 希尔排序实现4.1 希尔排序C实现4.2 希尔排序C++实现4.3 希尔排序Java实现转载请注明出处:http://www.cnblogs.com/skywang12345/p/3597597.html更多内容:数据结构与算法系列 目录 希尔排序介绍希尔排序(Shell Sort)是插入排序的
2020年10月13日
图解算法---希尔排序前情回顾:直接插入排序(对插入排序不熟悉的建议先阅读此文)一天,一尘拿着扑克自己在那玩,刚被师傅看见了首先它把较大的数据集合分割成若干个小组(逻辑上分组),然后对每一个小组分别进行插入排序,此时,插入排序所作用的数据量比较小(每一个小组),插入的效率比较高可以看出,他是按下标相隔距离为4分的组,也就是说把下标相差4的分到一组,比如这个例子中a[0]与a[4]是一组、a[1]与a[5]是一组...,这里的差值(距离)被称为增量每个分组进行插入排序后,各个分组就变成了有序的了(
2020年10月12日
以下求解过程是按照“计算机统考的计算方法”,不同的老师、教材在“处理冲突”上可能会有不同的方法,所以最主要的是掌握原理即可,对于考研的朋友最好掌握统考真题的解题方法。题目例子:(2010年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合试题第一题) 将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组。散列函数为: H(key) = (keyx3) MOD&nb
2020年10月12日
深度优先深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。我们从这里可以看到,这样的访问策略是优先往纵向挖掘深入,而不是对一个结点的所有邻接结点进行横向访问。具体算法表述如下:访问初始结点v,并标记结点v为已访问。查找结点v的第一个邻接结点w。若w存在,则继续执行4,否则算法结束。若w
2020年10月12日
队列(queue)是一种采用先进先出(FIFO)策略的抽象数据结构,即最先进队列的数据元素,同样要最先出队列。队列跟我们排队买票一样,先来排队的肯定先买票,后来排队的的后买到票。队列如下图所示:队列有两个重要的概念,一个叫队头,一个叫队尾,队头指向的是第一个元素,而队尾指向的是最后一个元素。队列跟栈一样也是访问受限制的,所以队列也只有两个主要的操作:入队(enqueue)操作 和 出队(dequeue)操作 。入队操作就是将一个元素添加到队尾,出队操作就是从队头取出