- 博客(29)
- 收藏
- 关注
原创 【C++进阶篇】二叉搜索数
3.1 二叉搜索树的删除(一)首先查找元素是否在二叉搜索树中,如果不存在,则返回, 否则要删除的结点可能分下面四种情况:a. 要删除的结点无孩子结点:直接删除就可以b. 要删除的结点只有左孩子结点:删除此节点后,将此节点直接连接到父亲节点就可以c. 要删除的结点只有右孩子结点:也是直接删除,然后直接把节点连接到父节点上d. 要删除的结点有左、右孩子结点:这个我们在下面分析
2023-12-13 22:13:12
1567
20
原创 【C++进阶】多态
对象中的这个指针我们叫做虚函数表指针(v代表virtual,f代表function)。一个含有虚函数的类中都至少都有一个虚函数表指针,因为虚函数的地址要被放到虚函数表中,虚函数表也简称虚表这里我们要注意:只要有虚函数就有虚函数表
2023-11-26 21:55:35
1266
31
原创 [C++进阶篇]STL中vector的使用
四、深浅拷贝问题resize开辟有效数据空间并初始化时不能使用memset初始化,因为mem系列函数是按字节去处理reserve开辟容量空间时开辟的新空间不能使用memcpy把旧空间的数据拷贝过去,要使用循环赋值过去,因为memcpy是浅拷贝,浅拷贝最后会导致释放旧空间新空间的指针指向一块已被释放的空间,造成程序崩溃
2023-11-04 21:14:58
620
34
原创 [C++进阶篇]STL以及string的使用
深浅拷贝问题这里面我们必须涉及一个问题就是深浅拷贝的问题深拷贝:本质,就是防止内存公共用一个内存浅拷贝:公用一个内存块;一个数据修改会影响另一个数据
2023-10-29 20:37:36
383
21
原创 C++初阶——拷贝构造和运算符重载(const成员)
1.2 拷贝构造函数特征:拷贝构造是构造函数的一个重载形式拷贝构造函数只能有一个参数且必须是类类型对象的引用使用传值方式编译器直接报错,因为会引发无穷递归调用
2023-08-06 16:02:09
464
30
原创 C++初阶——缺省参数以及函数重载
1. 缺省参数缺省参数的分类:全缺省,半缺省缺省参数是声明或定义函数时为函数的参数指定一个缺省值在调用该函数时,若没有指定实参则采用该形参的缺省值否则使用指定的实参
2023-07-30 14:42:39
267
12
原创 数据结构——六大排序 (插入,选择,希尔,冒泡,堆,快速排序)
. 插入排序1.1基本思路把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列
2023-07-18 23:07:38
943
14
原创 数据结构——堆的实现(细)
这里面我们这期主要就讲解两种方法:向下调整,向上调整这两种方法向下调整算法:作用就是通过从上到下的算法排序,将任意一个堆变成最小堆或者最大堆。步骤:(此处以最小堆为例)1、从根节点的左右孩子中选取一个较小值min2、当前需要调整的数据与较小值min进行比较大于min:和min进行交换,从交换后的位置继续执行第1步;小于等于min:结束
2023-07-11 12:42:32
400
12
原创 数据结构——队列的实现(细就完事了)
今天我们要是实现的队列是完全相反的,队列是数据先进先出。而在栈中我们使用的顺序表(数组)来实现的。而队列却用单链表来实现是更加合适的。队列:只允许在一端进行插入数据操作,在另一端进行数据操作的特殊线性表,队列具有先进先出FIFO(Frist in First out)。入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头
2023-05-20 16:31:26
879
14
原创 (数据结构)栈的实现——再一次保姆级教学
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶
2023-05-17 21:01:35
1549
16
原创 数据结构——双向链表(保姆级教程,包学包会)
1.双向链表的概念双向链表就是带头双向循环链表我们在学完单链表之后,就感觉这个非常简单了,他的主要表现就是拥有头节点,链表永不为空,不需要二级指针;可以通过一个节点找到上一个或者下一个节点;头尾相连呈环状。他主要结构是由prev、next、data,这三个结构组成,通过prev找到前一个节点,next就不用多说了。
2023-05-14 19:31:27
9748
16
原创 数据结构入门(二)——单链表(增,删,查,改)
我们给int重新定义一下新类型叫做SLDataType,这里我们要说明一下,如果我们想要改变数据类型在这里直接就可以改变,不需要在程序中挨个改变
2023-04-26 16:20:14
585
13
原创 C语言程序环境和预处理
1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。2. 程序的执行便开始。接着便调用main函数。3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值
2023-04-05 08:57:45
99
1
原创 位段,枚举,联合——画图详解
1. 位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型2. 位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段
2023-03-22 17:31:26
129
6
原创 自定义类型详解——结构体
首先掌握结构体对齐规则:1. 第一个成员在与结构体变量偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。VS中默认的值为83. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
2023-03-19 19:41:21
135
4
原创 字符函数和字符串函数(下)
strtokchar * strtok ( char * str, const char * sep )• sep参数是个字符串,定义了用作分隔符的字符集合• 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标 记。• strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。)• s
2023-03-15 14:49:24
106
5
原创 字符函数和字符串函数(上)
求字符串长度1.strlensize_t strlen(const char* str)• 字符串是以‘\0’结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )• 参数指向的字符串必须要以 '\0' 结束• 注意函数的返回值为size_t,是无符号的下面直接上代码(模拟strlen函数):
2023-03-13 22:33:00
86
5
原创 模拟strcpy函数的实现
前言strcpy函数在整个c语言中,是一个初学者的必经之路,那么本期将带来strcpy的使用详解,后面一期是strlen的详解,如果喜欢的话请点个关注和赞吧
2023-02-14 12:15:24
128
11
原创 三字棋,超详细讲解
首先我们都应该知道三字棋规则,这里就不过多介绍了。主要步骤:1. 初始化棋盘2. 展示棋盘,把棋盘上面的分界线展示出来3. 玩家下棋4. 电脑下棋5. 判断输赢
2023-01-23 14:21:21
685
9
原创 scanf函数中遇到的问题
首先我们要知道scanf'函数的转化原理:1. 我们在输入前未被scanf存起来的值,其实都是字符,例如数字123,在为被存起来是字符‘1’ ‘2’ ‘3’ 而经过%d转换完成后才变成数字1232.“缓冲区”(划重点,这个可太恶心了,困扰我好几天)当程序运行到scanf时,这个时候程序会从缓冲区这个里面读取
2022-12-24 15:40:08
754
7
原创 sizeof和strlen区别,例题简单明了
首先看一下两者之间区别1. sizeof:是一个运算符,可以以类型、函数、做参数 。计算的是数组的大小。(包含 \0)2. strlen:是c语言标准库函数,只能计算字符串的长度。在计算数组的时候,只能计算中间实际的字符数,是 \0 之前的数。(不包含 \0 )
2022-12-09 13:51:23
210
4
原创 一个初级小萝卜头的感想
大家好,这里是一个初级小萝卜头的感想。本人是一个二本双非的学校,目前大二,是物联网工程专业。在学校的生活中,大家都在 摸 鱼,根本就和学习这个词语不搭边,每天生活就是起床收拾收拾,头型不能乱,到饭点了和室友们一起去食堂,午饭过后在寝室中打打游戏,晚上去操场玩会,每天都过着生于忧患,死于安乐的生活中。由于疫情的影响,这学期没有按时开学,在家里玩了2个月后,良心突然发现生活逐渐变得枯燥 无味,产生了学习的念头,但是毫无头绪,由于机缘巧合产生了学习编程的想法,便开始认真学习起编程。在学习c语言的过程中
2022-12-01 23:02:51
398
5
原创 按位取反运算,简短精炼
概念:补码:正数的补码就是原码,负数补码符号位不变,其余各位依次取反,最后末尾+1反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)按位取反:所有位(符号位)都改变,0变1,1变0二进制的补码表示和原码表示关系:1.对于一个正数的原码表示,他的原码表示就是它的补码表示2.对于一个负数的原码表示,他的原码表示和补码表示如下转换规则:
2022-11-30 19:30:38
5463
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人