汉明码(海明码、hamming code)通俗易懂的解释

想要理解汉明码首先要知道“奇偶校验”这个东西。这个东西很简单。我们约定一串编码里1的个数是偶数个,那么这串编码里携带的信息就是对的,否则就是错的。我们可以在开头对这串编码加一位校验码实现奇偶校验。for example:我们想传输10010这串码,那么在传输的时候,就传010010,其中在开头的0就是校验位。我们想传输10000这串码,那么在传输的时候,就传110000,其中在开头的1就是校验位。两个例子的1的个数都是偶数。  好了,接下来可以讲汉明码了。首先汉明码是采用奇偶

C++的重载操作符(operator)介绍

本文主要介绍C++中的重载操作符(operator)的相关知识。1. 概述  1.1 whatoperator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理解时可将operator和运算符(如operator=)视为一个函数名。使用operator重载运算符,是C++扩展运算符功能的方法。使用operator扩展运算符功能的原因如下: 使重载后的运算符的使用方法与重载前一致扩展运算符的功能只能通过函数的方式实现(实际上,C++中各种

为什么 C++ 中,基类指针可以指向派生类对象?

可以指向,但是无法使用不存在于基类只存在于派生类的元素。(所以我们需要虚函数和纯虚函数)原因是这样的:在内存中,一个基类类型的指针是覆盖N个单位长度的内存空间。当其指向派生类的时候,由于派生类元素在内存中堆放是:前N个是基类的元素,N之后的是派生类的元素。于是基类的指针就可以访问到基类也有的元素了,但是此时无法访问到派生类(就是N之后)的元素。基类指针可以指向派生类对象而派生类指针不可以指向基类对象同理派生类可以为基类赋值,而基类不能给派生类赋值

二叉树(BST树)内结点的删除(3种情况全解)

现在有一棵二叉树查找树如下:  如果我们需要删除一个结点,而且在删除之后,依然满足二叉查找树的数据排序策略。此时删除操作可分为一下三种情况。如下情况1:结点没有左子树 如图:一棵没有左子树的二叉树  如果在此情况下删除结点,按照结点的位置又可以分为三种处理方式。如下删除根结点:删除根结点也就是删除结点 5,此时只需将根结点指针指向其右子树结点。如下图 删除叶子结点:如果删除的结点是叶子结点也就是结点9,此时只需将父节点指向NULL,如下

已知完全二叉树的第5层有6个结点,则其叶子结点数是

根据完全二叉树的bai性质,如果du第5层结点最多为2的4次共16个,显然不满zhi,第4层是8个结点,有三个dao结点度为2个点(第5层6个,第四层出发的点3个度为2的结点就是6个),其他为叶子结点,所以可以看出叶子个数是:第5层的6个叶子结点 + 第4层5个(8-3),总共11个叶子结点。

堆排序算法C语言详解

在学习堆排序之前,首先需要了解堆的含义:在含有 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 个关键字)对于堆的定义

希尔排序

概要本章介绍排序算法中的希尔排序。内容包括:1. 希尔排序介绍2. 希尔排序图文说明3. 希尔排序的时间复杂度和稳定性4. 希尔排序实现4.1 希尔排序C实现4.2 希尔排序C++实现4.3 希尔排序Java实现转载请注明出处:http://www.cnblogs.com/skywang12345/p/3597597.html更多内容:数据结构与算法系列 目录 希尔排序介绍希尔排序(Shell Sort)是插入排序的

希尔排序--简单易懂图解

图解算法---希尔排序前情回顾:直接插入排序(对插入排序不熟悉的建议先阅读此文)一天,一尘拿着扑克自己在那玩,刚被师傅看见了首先它把较大的数据集合分割成若干个小组(逻辑上分组),然后对每一个小组分别进行插入排序,此时,插入排序所作用的数据量比较小(每一个小组),插入的效率比较高可以看出,他是按下标相隔距离为4分的组,也就是说把下标相差4的分到一组,比如这个例子中a[0]与a[4]是一组、a[1]与a[5]是一组...,这里的差值(距离)被称为增量每个分组进行插入排序后,各个分组就变成了有序的了(

哈希表查找——成功和不成功时的平均查找长度

以下求解过程是按照“计算机统考的计算方法”,不同的老师、教材在“处理冲突”上可能会有不同的方法,所以最主要的是掌握原理即可,对于考研的朋友最好掌握统考真题的解题方法。题目例子:(2010年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合试题第一题) 将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组。散列函数为: H(key) = (keyx3) MOD&nb

图的理解:深度优先和广度优先遍历

深度优先深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。我们从这里可以看到,这样的访问策略是优先往纵向挖掘深入,而不是对一个结点的所有邻接结点进行横向访问。具体算法表述如下:访问初始结点v,并标记结点v为已访问。查找结点v的第一个邻接结点w。若w存在,则继续执行4,否则算法结束。若w