C
文章平均质量分 65
誰能久伴不乏
这个作者很懒,什么都没留下…
展开
-
红黑树的原理
定义 — 是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质:1)节点是红色或黑色;2)根节点是黑色;3)所有叶子节点都是黑色节点(NULL);4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。5)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。原创 2023-09-17 22:02:38 · 315 阅读 · 0 评论 -
哈夫曼编码原理及实现
构建编码树的方法是将频率最低的两个符号合并为一个新节点,该节点的频率为两个节点频率之和。哈夫曼编码(Huffman Coding)是一种用于数据压缩的编码方法,它通过给出不同的数据符号分配不同长度的编码,使得出现频率高的符号具有较短的编码,而出现频率低的符号具有较长的编码,从而达到压缩数据的目的。然而,对于哈夫曼编码的最佳性能,符号的频率应该是根据数据集的统计特征进行调整的。由于频率高的符号具有较短的编码,而频率低的符号具有较长的编码,所以整个编码后的数据长度会相对减小。原创 2023-09-17 21:52:20 · 1984 阅读 · 0 评论 -
二叉树的具体原理及实现
如果要插入的键值小于当前节点的键值,并且当前节点没有左子节点,则将新节点作为当前节点的左子节点;如果要插入的键值大于当前节点的键值,并且当前节点没有右子节点,则将新节点作为当前节点的右子节点。首先,找到要删除的节点。如果要删除的节点有两个子节点,可以找到其右子树中的最小节点(或者左子树中的最大节点)来替换它。将要删除的节点的值,与节点 root 节点进行比较,若小于则去到左子树进行比较,若大于则去到右子树进行比较,重复以。4.删除节点存在左右子节点,则取左子树上的最大节点或右子树上的最小节点替换删除节点。原创 2023-09-17 21:39:20 · 642 阅读 · 0 评论 -
函数指针与指针函数
函数指针与指针函数详解原创 2023-07-04 17:53:40 · 195 阅读 · 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 · 118 阅读 · 1 评论 -
C++,STL,set,multiset容器
set和multiset是一个集合容器,其中set所包含的元素是唯一的,集合中的元素按一定的顺序排列。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。在n个数中查找目标数的效率是 log2 n红黑树定义 — 是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质:1)节点是红色或黑色;2)根节点是黑色;3)所有叶子节点都是黑色节点(NULL);4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续原创 2022-12-05 21:45:02 · 141 阅读 · 0 评论 -
string解析
#string解析string是C++的一种字符串,在C语言中,没得string在string中,存储的每一个字符,都是char类型的,并且string支持下标访问而且string自带下标,不需要分配数组##string基本用法使用string的时候,切记,切记,string不能读取空格,string必须读取连续的数据,遇到空格,或者换行符,就会结束读取,导致数据不完整。#includ...原创 2020-03-02 17:56:22 · 860 阅读 · 0 评论 -
c++笔记
#getline的用法#include <iostream>#include <windows.h>#include <string>using namespace std;int main (void){ string x; cout<<"请输入字符串:"; getline(cin,x);//getline==读取一行,遇到换行符...原创 2020-03-03 18:51:29 · 1746 阅读 · 2 评论 -
C++基础练习题
第二题打印任意行数用*组成的三角第三题打印任意行数的倒三角第四题打印打印任意行数的金字塔第五题 打印任意行数的倒金字塔第六题 打印乘法口诀表第七题 打印出所有水仙花数水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。第八题 打印任意个斐波那契数斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列和兔子数列,指的是这原创 2020-03-07 18:00:55 · 1994 阅读 · 1 评论 -
C/C++最细循环解析
while循环解析当需要反复执行某些“过程”时,就可以使用 while 循环。语法:while (条件) {语句 1语句 2… }强烈建议,无论循环体内有几条语句,都使用{}while适用于死循环死循环有些场合(比如,游戏引擎的主循环, 就是一个死循环)更多场合,需要避免死循环。break 的作用跳出所在的循环代码:需求:1+2+3+4+…100#include &...原创 2020-03-08 14:57:24 · 390 阅读 · 0 评论 -
C++指针笔记
1.函数的值传递,无法通过调用函数,来修改函数的实参.2.被调用函数需要提供更多的“返回值”给调用函数3.减少值传递时带来的额外开销,提高代码执行效率指针的定义注意:32 位系统中,int 整数占 4 个字节,指针同样占 4 个字节64 位系统中,int 整数占 4 个字节,指针同样占 8 个字节什么是空指针?坏指针int *select; //没有初始化情形一printf(“选择的房间是: %d\n”, *select);情形二select = 100;printf(“选原创 2020-03-17 21:06:21 · 993 阅读 · 1 评论 -
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 · 260 阅读 · 0 评论 -
C++笔记-动态内存
1.按需分配,根据需要分配内存,不浪费内存拷贝函数void *memcpy(void *dest, const void *src, size_t n);#include功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中void *malloc(size_t size);void free(void *);malloc 在内存的动态存储区中分配一块长度为size字节的连续区域返回该区域的首地址.突破栈区的限制,可以给程序分配更多的原创 2020-03-21 21:08:28 · 348 阅读 · 1 评论 -
C++ 笔记-结构体-枚举-类型定义
为什么要使用“结构”(结构体)但需要表示一些复杂信息时,使用单纯的数据类型很不方便。比如:学生信息(学号,姓名,班级,电话,年龄)什么是“结构”结构,就是程序员自定义的一种“数据类型”是使用多个基本数据类型、或者其他结构,组合而成的一种新的“数据类型”。结构的定义struct 结构名 {成员类型 成员名;成员类型 成员名;};比如:struct student {...原创 2020-03-25 17:59:10 · 2358 阅读 · 1 评论 -
C++,STL,vector容器
vector相当于顺序表vector是将元素置于一个动态数组中加以管理的容器。vector可以随机存取元素,支持索引值直接存取, 用[]操作符或at()方法对元素进行操作vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时,这是因为在中部或者头部插入数据,所以数据都会移动,会大量拷贝。原创 2022-11-18 09:46:22 · 713 阅读 · 0 评论 -
利用指针找最大值
实现的方法很简单,一边输入一边判断,遍历数组在使用一个值专门来记数组最大值的下标就可以了,原创 2022-11-04 23:06:40 · 6216 阅读 · 0 评论 -
顺序栈的各种操作
注意:顺序栈只能在一端操作,后进先出,这是栈的关键特征,也就是说不允许在中间查找,取值,插入,删除,等,操作,掌握好顺序栈的,初始化,入栈,出栈,去栈顶元素等操作即可。2.进出的一端为栈顶(top),另一端为栈底(base),栈可以用顺序存储,也可以用链式存储。1.栈是一种线性表,只不过它是操作,受限的线性表,只能在一端操作。其中,base指向栈地,top指向栈顶。原创 2022-10-04 19:28:35 · 288 阅读 · 0 评论 -
优先级队列
代码】C++优先级队列。原创 2022-08-18 09:17:38 · 191 阅读 · 0 评论 -
C循环队列
代码】C++循环队列。原创 2022-08-18 09:13:36 · 538 阅读 · 0 评论 -
C/C++双向链表的各种操作
运行环境:VS2022 X64。原创 2022-08-06 23:40:50 · 247 阅读 · 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 · 837 阅读 · 0 评论