- 博客(8)
- 收藏
- 关注
原创 Huffman树
Huffman树Huffman树,又称为最优二叉树,是加权路径长度最短的二叉树构建Huffman树选当前权值最小的两个结点,构建一个父亲结点,形成一颗树;该树父亲节点的权值是,左孩子和右孩子权值的和;将构建的父亲节点的权值扔回,和剩余结点做比较,在选两个权值最小的,构成树最终形成一颗树,叫Huffman树树的特点每个节点的权值是,以该节点为根节点的树,中所有叶子节点权值的和权值越小,深度越深(编码...
2018-03-21 17:27:25
272
原创 BinarySearchTree-二叉搜索树
二叉搜索树的性质:每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。左子树上所有节点的关键码(key)都小于根节点的关键码(key)。右子树上所有节点的关键码(key)都大于根节点的关键码(key)。左右子树都是二叉搜索树。非递归bool insert(const T& key)bool Insert(const T& key) { if (_root...
2018-03-21 17:22:52
249
原创 heap(堆)的实现
堆堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆的特点:堆顶元素为最值(大堆最大,小堆最小)。具体实现实现一个堆涉及两个算法,分别是向下调整算法AdjustDown(root),和向上调整算法AdjustUp(chaild)。下面开始介绍这两个算法1、AdjustDown(root)作用是将以...
2018-03-14 21:16:06
377
原创 用string剖析浅拷贝、深拷贝、写时拷贝
一、浅拷贝对于普通变量来说,它们之间的互相赋值很简单:int a=1;int b=2;a=b;但是对类对象来说存在深浅拷贝问题:浅拷贝就是值拷贝!示例:class String{public : String(const char* str) : _str(new char [strlen(str )+1])
2017-09-02 18:54:31
335
原创 虚函数&多态
一、虚函数和多态·什么是虚函数?类的成员函数前加上virtual关键字,则这个成员函数就是虚函数。·什么是虚函数重写? 当在子类中定义了一个与父类完全相同的(名字相同,参数相同)的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个虚函数。·什么是多态? 使用基类的指针或引用调用重写的虚函数时,当指向父类调用的就是父类的虚函数,
2017-08-31 20:12:14
624
原创 多种情况下多态的对象模型
首先来看一下几个概念:·什么是虚函数?类的成员函数前加上virtual关键字,则这个成员函数就是虚函数。·什么是虚函数重写? 当在子类中定义了一个与父类完全相同的(名字相同,参数相同)的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个虚函数。·什么事多态? 使用基类的指针或引用调用重写的虚函数时,当指向父类调用的就是父类的虚
2017-08-06 21:24:32
333
原创 剖析C++是如何解决菱形继承的二义性和数据冗余的
1.首先我们来解释一下二义性和数据冗余是如何产生的。 我们知道在C++中继承分单继承和多继承,单继承就是一个子类只有一个直接父类,而多继承是一个子类有两个或 两个以上直接父类。 如上图所示多继承,构成菱形继承
2017-08-04 00:13:05
650
原创 大小写字母转换
要求: 如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。#include int main(){int ch = 0;printf("请输入一个字母:\n");while ((ch = getchar()) != EOF){if ((ch >= 'A') && (ch {
2017-04-05 21:43:26
649
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人