笔记
文章平均质量分 60
誰能久伴不乏
这个作者很懒,什么都没留下…
展开
-
红黑树的原理
定义 — 是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质:1)节点是红色或黑色;2)根节点是黑色;3)所有叶子节点都是黑色节点(NULL);4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。5)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。原创 2023-09-17 22:02:38 · 558 阅读 · 0 评论 -
哈夫曼编码原理及实现
构建编码树的方法是将频率最低的两个符号合并为一个新节点,该节点的频率为两个节点频率之和。哈夫曼编码(Huffman Coding)是一种用于数据压缩的编码方法,它通过给出不同的数据符号分配不同长度的编码,使得出现频率高的符号具有较短的编码,而出现频率低的符号具有较长的编码,从而达到压缩数据的目的。然而,对于哈夫曼编码的最佳性能,符号的频率应该是根据数据集的统计特征进行调整的。由于频率高的符号具有较短的编码,而频率低的符号具有较长的编码,所以整个编码后的数据长度会相对减小。原创 2023-09-17 21:52:20 · 3591 阅读 · 0 评论 -
二叉树的具体原理及实现
如果要插入的键值小于当前节点的键值,并且当前节点没有左子节点,则将新节点作为当前节点的左子节点;如果要插入的键值大于当前节点的键值,并且当前节点没有右子节点,则将新节点作为当前节点的右子节点。首先,找到要删除的节点。如果要删除的节点有两个子节点,可以找到其右子树中的最小节点(或者左子树中的最大节点)来替换它。将要删除的节点的值,与节点 root 节点进行比较,若小于则去到左子树进行比较,若大于则去到右子树进行比较,重复以。4.删除节点存在左右子节点,则取左子树上的最大节点或右子树上的最小节点替换删除节点。原创 2023-09-17 21:39:20 · 898 阅读 · 0 评论 -
函数指针与指针函数
函数指针与指针函数详解原创 2023-07-04 17:53:40 · 454 阅读 · 0 评论 -
利用指针找最大值
实现的方法很简单,一边输入一边判断,遍历数组在使用一个值专门来记数组最大值的下标就可以了,原创 2022-11-04 23:06:40 · 6690 阅读 · 0 评论 -
顺序表的实现
结构体定义 # define MAX_SIZE 100 struct _SqList {// 顺序表的基地址 int length;// 顺序表的长度 int size;// 顺序表总的空间大小 }100结构体定义 # define MAX_SIZE 100 struct _SqList {// 顺序表的基地址 int length;// 顺序表的长度 int size;// 顺序表总的空间大小 }原创 2023-01-01 11:14:33 · 306 阅读 · 1 评论 -
C++,STL,List容器
/反转链表,比如list包含1, 2, 3, 4, 5五个元素,运行此方法后,list就包含5, 4, 3, 2, 1元素。//在pos位置插入[beg,end)区间的数据,无返回值。//在pos位置插入一个elem元素的拷贝,返回新数据的位置。//将[beg, end)区间中的数据拷贝赋值给本身。//删除[beg,end)区间的数据,返回下一个数据的位置。//将[beg, end)区间中的元素拷贝给本身。//删除pos位置的数据,返回下一个数据的位置。原创 2022-11-22 22:08:57 · 250 阅读 · 0 评论 -
C++,STL,deque容器
deque是“double-ended queue”的缩写,和vector一样都是STL的容器,唯一不同的 是: deque是双端数组,而vector是单端的。//将[beg, end)区间中的数据拷贝赋值给本身。//在pos位置插入一个elem元素的拷贝,返回新数据 的位置。//在pos位置插入[beg,end)区间的数据,无返回值。//构造函数将[beg, end)区间中的元素拷贝给本身。//删除[beg,end)区间的数据,返回下一个数据的位置。//存放float的deque容器。原创 2022-11-19 11:13:14 · 121 阅读 · 0 评论 -
链表实现队列
代码】链表实现顺序表。原创 2022-08-09 23:36:25 · 308 阅读 · 0 评论 -
顺序表实现队列
其中有两种出队列的方式,原理如下。原创 2022-08-09 23:33:43 · 122 阅读 · 0 评论 -
Linux 内核“共享”双向链表(高逼格代码)
/一. web 服务器超时的链表结构 typedef struct {int fd;// 使用超时时刻的时间戳表示 } ConnTimeout;} //二.璀璨星空的链表结构 typedef struct {int x;//星星的 x 坐标 int y;//星星的 y 坐标 enum STATUS stat;//状态 unsigned radius;//星星的半径 int step;//每次跳跃的间隔 int color;//星星的颜色 } STAR;}...原创 2022-08-08 18:42:30 · 194 阅读 · 0 评论 -
C/C++双向链表的各种操作
运行环境:VS2022 X64。原创 2022-08-06 23:40:50 · 298 阅读 · 0 评论 -
C++单链表,增,改,删,查
单链表的增,改,删,查原创 2022-07-26 23:14:28 · 591 阅读 · 0 评论 -
让程序在一秒或者多秒中做一件事情
代码】让程序在一秒或者多秒中做一件事情。原创 2022-07-21 20:29:39 · 160 阅读 · 0 评论 -
C顺序表实现
代码】顺序表实现。原创 2022-07-21 11:13:06 · 135 阅读 · 0 评论 -
C++类型转换
旧式转型 C风格的强制类型:TYPE b = (TYPE) a例如:int i = 48;char c = (char) i;新式转型C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。格式:TYPE b = 类型操作符 ( a )类型操作符= static_cast | reinterpreter_cast | dynamic_cast | const_cast静态类型转换(斯文的劝导,温柔的转换)。如int转换成char主要用法:1.用于类层次结构中基类(父类)和派生类原创 2022-07-13 22:57:41 · 337 阅读 · 0 评论 -
函数模板_类模板
项目需求: 实现多个函数用来返回两个数的最大值,要求能支持char类型、int类型、double类型变量实际上,以上程序,只需要一个“函数”就可以搞定!函数模板语法所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。由以下三部分组成: 模板说明 + 函数定义 +原创 2022-06-24 20:00:58 · 1095 阅读 · 0 评论 -
C++运算符重载
ps:代码可以直接运行boy.hman.hboy.cppman.cppmain.cpp原创 2022-06-22 13:37:23 · 320 阅读 · 0 评论 -
C++核心_编程_多态
1.为了避免程序的二义性2.当统一使用父类指针处理的时候,父类指针指向子类的时候,去调用子类里面的方法,实际上调用的是父类的方法运行结果这里就是使用父类指针做统一处理,使用了父类指针指向了子类对象,但是调用的实际上还是父类的函数在父类的成员函数前面加上virtual,使用虚函数来处理,子类可加可不加多态的本质:形式上,使用统一的父类指针做一般性处理,但是实际执行时,这个指针可能指向子类对象,形式上,原本调用父类的方法,但是实际上会调用子类的同名方法。【注意】程序执行时,父类指针指向父类对象,或原创 2022-06-09 15:00:40 · 109 阅读 · 0 评论 -
C++错误总结
string x;//品种 float y;//重量 float j;//长度 };"草鱼" };return 0;}这是报错的源代码,编译器没有任何报错,但是一编译就出问题,我看了半天才发现原来是struct中的string 前面没有加std::以为我在mani函数前加了using namespace std;但是我定义struct的时候定义在了using namespace std;前面,所以导致了“未知重写说明符”...原创 2022-04-18 20:44:34 · 5389 阅读 · 0 评论 -
C/C++操作硬件位运算
什么是位?内存的基本单元是字节, 一个字节有 8 位.有那些操作符1.位与 & 0 & 0 0 0 & 1 0 1 & 0 0 1 & 1 1 cout << " 8 & 3 = " << (8 & 3) << endl;// & 00110011// 01010101-----------------得到 00010001ps:对应位, 都是 1, 结果才原创 2022-03-08 23:38:41 · 1032 阅读 · 0 评论 -
C/C++ cout,printf输出控制精度
C++控制精度输出的方法:1.首先需要添加一个#include <iomanip>头文件2.cout << setiosflags(ios::fixed) << setprecision(2) << y;3setprecision(2),这个2代表的是保留小数点的位数C控制精度的方法1.printf("%.2f", y);这里面的%.2f代表的是保留两位小数....原创 2022-03-03 19:43:53 · 1080 阅读 · 0 评论 -
switch基本用法
switch用法原创 2020-07-04 18:00:58 · 698 阅读 · 0 评论 -
C++ I/O文件读写操作
IO: 向设备输入数据和输出数据C++的IO流c++中,必须通过特定的已经定义好的类, 来处理IO(输入输出)文件流: 对文件进行读写操作头文件: 类库:ifstream 对文件输入(读文件)ofstream 对文件输出(写文件)fstream 对文件输入或输出//写文件#include <fstream>#include <iostream>#include <string>using namespace std;原创 2020-05-22 08:58:50 · 4057 阅读 · 11 评论 -
C++面向对象派生继承-笔记
代码:Father.hSon.hFather.cppSon.cppmain.cpp子类, 一般会添加自己的数据成员/成员函数,或者, 重新定义从父类继承的方法!!! 子类对象就会调用自己重新定义的方法, 不会调用父类的同名方法为什么要使用protected访问权限?子类的成员函数中,不能直接访问父类的private成员,已经这些成员已经被继承下来了,但是却不能访问。只有通过父类的public函数来间接访问,不是很方便。比如,刚才Demo中Father类中的name和age成员。解决方原创 2020-04-19 18:59:13 · 623 阅读 · 0 评论 -
C++面向对象-类的基本使用方法
什么是面向过程?根据程序的执行过程,来设计软件的所有细节。面向过程的缺点:开发大型项目时,越来越难以把控,甚至失去控制。后期维护、更新成本很大。解决方案:使用面向对象。面向过程是C语言的东西,C++是面向对象什么是面向对象?面向对象是一种开发思想,一种全新的开发方式。面向对象思想的重要性:开发大型项目必备,是高级程序员的必备技能!“人类”是一个抽象的概念,不是具体的某个人。“类”,是看不见,摸不着的,是一个纯粹的概念.“类”,是一种特殊的“数据类型”,不是一个具体的数据。注意:类, 和基本原创 2020-04-04 12:45:02 · 2732 阅读 · 0 评论 -
C++笔记-之错误总结
第一个易犯错误char[]类型的字符串不能用==判断,需要用strcmp进行判断string字符串可以用==进行判断int main (void){ //char x[2]; string x1; printf("请选择是读EXCLE还是写!\n"); cin>>(x1); /* if(strcmp(x,"读")!=0 && strcmp(x,"写"...原创 2020-03-21 15:54:14 · 289 阅读 · 0 评论