- 博客(41)
- 收藏
- 关注
原创 刷题记录--算法--简单
上面的图表现出time=5时走出了一个往复,用除法体现5/3=1(这里必须是除3也就是n-1,因为向右前进时i只走了三步),剩下的两部5%3=2,所以n=4,time=5时,i走了一个往复,先向右走到4,然后调头走到2,这里的5/3=1的1表示的i走完一个全程(全程指的是1到4,或者4到1,不管方向,总之1代表走完一个全程,就是这样凸(艹皿艹 )这特么的这么难写,凸(艹皿艹 )啊);接下来看看n,n分为1两种情况,n
2023-12-07 16:04:21
329
原创 C++基础之类二(六个成员函数、构造及析构)待完善
构造函数与析构函数分别管理类对象的初始化与释放构造函数没有返回值,名称与类名相同,可以重载,也可以缺省,不显示定义,编译器会自动生成无参的构造函数,但是编译器生成的对内置类型不处理,对自定义类型会调用它的默认构造函数。默认构造函数时指无参或者全缺省的构造函数,一个类中有且只有一个默认构造函数。析构函数与无参无返回值,函数名是类名前加~,一个类有且只有一个析构函数,不显式定义时,编译器会自动生成,但编译器生成的只能完成有限的工作,对于内置类型不处理,对于自定义类型会调用它的析构函数。
2023-10-23 21:38:22
237
原创 C++基础之类二(类的实例化,This指针)
之前学过了类,但在编程中类无法直接使用,需要将类进行实例化后才能使用,现在就来看看类的实例化是什么?用类创建对象的过程叫做类的实例化,类可以抽象为虚拟的图纸,对象是按照图纸创建好的类,创建的过程就是类的实例化。对象是按照类创建的实体,所以对象的功能是按照类的设计,但两者之间还有很多不同点有内容的类:看一下下面的代码,它的大小应该是多少?看一下其中的元素,一个成员函数,两个成员变量,32位系统的情况下,成员函数的地址是4个字节,char类型是1字节,int类型是4字节,按照内存对齐的规则,这个类应该是1
2023-10-12 21:43:08
309
原创 C++基础之类一(面向对象,类的定义,类的作用域)
从类开始学习C++,是因为类很好的体现了C++的面向对象的特性,类是C语言的struct升级版本,除了包含程序所需的成员变量外,还增加了该成员的成员函数,实现了一个完整的对象。需要注意类的定义并不是创造了类的实体,而是定义类的图纸,创造实体时按照图纸进行创建。");exit(-1);
2023-10-09 19:51:11
155
原创 C++基础三-内联函数
内联函数声明与定义不能分离,是因为编译时符号表中不会有内联函数的地址,内联函数只能在定义的文件中使用,链接时声明文件没有内联函数的地址,所以会出现无法解析外部符号的错误;所以内联函数的声明和定义一定要放在一起。
2023-09-14 22:51:08
138
原创 数据结构初阶之二叉树(5)
之前学习过二叉树的遍历,其实遍历的思路还可以用作二叉树的创建,假设我们有以下的二叉树前序遍历的结果"abd##eh##i##cf##g##",把这个字符串还原为一个二叉树。二叉树的销毁需要依次销毁节点,所以根节点应当是最后销毁的,所以最符合的是后续遍历的顺序(左节点--->右节点--->根节点)。完全二叉树只有最后一层才会出现空,且空后不会出现数据,所以判断完全二叉树,最好的方法是使用层序遍历,判断空后是否出现元素。层序遍历是按照二叉树每一层进行遍历,进行层序遍历需要使用队列,利用队列先进先出的特性。
2023-01-25 14:22:52
120
原创 数据结构初阶之二叉树(4)
力扣 刷题 递归 链表 二叉树 1. 单值二叉树。Oj链接2. 检查两颗树是否相同。OJ链接3. 对称二叉树。OJ链接4. 二叉树的前序遍历。 OJ链接5. 二叉树中序遍历 。OJ链接6. 二叉树的后序遍历 。OJ链接7. 另一颗树的子树。OJ链接
2022-12-06 22:40:15
371
原创 数据结构初阶之顺序表和链表
思路1,原地删除,该思路是在原来的链表中,对值为val的节点进行删除,主要考虑的是首节点的值为val,以及非首节点的值为val两种情况,首节点的值为val时,不断的移动首节点,直到找到第一个值不为val的节点,非首节点的值为val时,该节点被释放,所以需要两个指针,cur进行释放,prev指针进行定位,当该节点值不为val时,两个指针同时向前移动一步。上图红色箭头指向的节点就是开始逆置的节点,奇数个数节点的链表就是中间的节点,偶数个数的链表就是中间两个节点中靠后的一个,这里可以使用快慢指针实现。
2022-11-09 22:52:13
397
原创 数据结构初阶之算法的时间复杂度和空间复杂度
任何一段代码运行时都需要耗费时间与空间(内存),所以一段代码可以从时间与空间的角度来判断它的好坏,因此就有了时间复杂度与空间复杂度。时间复杂度主要是衡量一个代码运行的快慢,空间复杂度主要是衡量一段代码运行时需要多少额外的空间,不过因为现在的内存空间够大,所以空间复杂度显得不是很重要。
2022-10-05 20:33:44
534
原创 进阶C语言之数据在内存中的存储
C语言的基本内置类型名称解释占据空间(单位字节)char字符1short短整型2int整型4long长整型4(32位)/8(64位)long long长长整型8float浮点型4double双精度浮点型8类型的意义:一、决定了开辟的内存空间的大小。二、决定了看待内存空间的角度(存入和读取数据的方式)。
2022-09-24 23:47:47
363
原创 初学C语言之结构体
;};int main(){struct peo p1 = { "张三", "12345678901", "男", 188 };struct stu s = { {"李四","98765432101","女",166},37 };return 0;}
2022-09-22 21:33:44
275
原创 初学C语言之操作符详解
表达式2:表达式3,如果表达式1的值为真,那么计算表达式2的值并作为整个表达式的值,如果1为假,那么计算表达式3的值并作为整个表达式的值。规则:判断表达式的是否为真(C语言中0为假,非0为真),&&判断的是当两个值都为真时表达式的结果为真,若其中一个为假则表达式的值为假。(2)表达式,虽然a++的结果为1,但因为后置++,先使用再自增,所以表达式中得到的值为0,促发短路运算,后面没有再计算。(3)表达式,虽然a还是0,但前置++,a先进行了自增然后使用,所以表达式中的得到1,因此进行了后面的计算。
2022-09-20 21:04:18
201
原创 初学C语言系列之数组
上面这段代码的运行后,并没有将数组重新排序,根本原因是因为,数组传参是传递的是指针,因此BoboSort函数内的sz计算的是指针除以指针的大小结果为1,sz-1=0,i必须在小于0的时候才能进入循环,i的初始值为0,所以不能进入循环。从上图的运行结果发现,数组中元素的地址是连续的,而且是间隔相等的,所以数组在内存中是连续存储的,下标实际上就是记录每个元素地址位置的步长。上表可以看到,10个元素的数组,冒泡排序需要9趟,每次的对数是从9开始递减的,所以可以得出趟数=元素个数-1,对数=元素个数-趟数。
2022-09-08 18:18:11
780
原创 初学C语言系列之函数
{statement;}return_value 返回值fun_name 函数名para 参数statement 语句项(函数体)函数的声明是向编译器指出有这个函数,说明函数的参数类型,返回类型,但是并不是函数具体存在。函数的声明一般会出现在函数之前,函数的使用是满足先声明后使用。函数的声明一般要放在头文件中。函数定义是向编译器指出函数的具体实现方式。//函数声明,说明了print函数返回类型是void,不需要参数。...
2022-08-27 15:27:39
850
原创 C语言语句练习
演示出多个字符从两端移动,向中间汇聚,简单的说就是将上面数组的内容,赋值到下面的数组内,循环复制,每次只复制两端的两个字符,这个题需要思考的是循环的条件如何确定。假设被猜的数是7,mid的值是4对应的数组元素是5,5小于7,所以mid右边的数组元素可以不再管,将left的值修改为mid+1,并重新计算mid的值。分析:n的阶层就是1*2*3*4*5*....*n,所以程序需要一个变量不断的自增一直到n,还需要一个变量确定n的数值,需要一个变量存放n的阶层。5的阶层 :1*2*3*4*5=4!......
2022-08-17 19:35:37
482
原创 初学C语言系列之语句
程序所执行的就是语句。C语言的语句可以分为以下五类1、表达式语句。2、函数调用语句。3、控制语句。4、复合语句。5、空语句。选择与循环属于控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言的控制语句有九种1、条件判断(分支语句):if语句,switch语句。2、循环执行语句:while,for,do while。3、转向语句:break,goto,continue,return。...
2022-08-17 19:26:29
250
原创 初学C语言系列之C语言基础(3)
上面定义了一个最多放10个元素的整型数组。#define的作用是给实际内容定义标识符,相当于起了个别名定义后编程时可以直接使用标识符,程序编译阶段会替换成实际内容指针就是地址。指针变量是存放指针的变量。int *p=&a;int * p中,p是指指针变量的名称,*是说明p是指针变量,int说明p指向的对象是int类型。全局变量在编译时创建,局部变量在运行时创建。指针的意义,通过地址找到指针变量所指向的对象,*p就是p所指向的对象。}...
2022-08-09 18:40:22
274
原创 位运算练习-力扣645. 错误的集合
二、原数组除了错误数字,其余每个数字出现一次,所以没有出现的数字与错误的数字的奇偶性相同,与其他数字的奇偶性相异,所以在原数组后再加上正确数字组成的数组,并用xor进行异或判断,可以得出这缺失数字异或错误数字的结果。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合丢失了一个数字并且有一个数字重复。三、两个数字相异或得到的结果,是两个数字都没有的位,取其中的最低位,最低位计算的方法是lowbit=xor&(-xor)。来源力扣(LeetCode)...
2022-07-28 23:37:14
178
原创 初学C语言系列之C语言基础(1)
学习目的一、了解什么是C语言二、了解什么是C语言程序以及C程序的基本框架三、数据的类型四、变量和常量一、什么是C语言C语言以及底层C语言就是众多能和计算机交流,控制计算机的语言之一,是一种偏向于底层开发的语言。电脑是由硬件构成,需要驱动层和操作系统才能正常使用,这一部分被称为底层,C语言的优势就是针对这一部分编程。C语言的标准作为一门历史悠久的语言,C语言是有着统一标准的,这个标准是由ANSI(美国国家标准总局)指定的,截止目前已经经历了C89 C90 C.....
2022-07-26 21:44:39
267
原创 每天随便刷点题
描述输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。数据范围:1 \le n, m \le 1000 \1≤n,m≤1000, 序列中的值满足0 \le val \le 30000 \0≤val≤30000输入描述:输入包含三行,第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。第二行包含n个整数,用空格分隔。第三行包含m个整数,用空格分隔。输出描述:输出为一行,输出长度为n...
2022-05-26 23:24:41
141
原创 深度解析C语言之数据在内存中的存储2
学习目的了解浮点家族了解浮点型在计算机内存中的表示方法了解浮点型的存入方式了解浮点型的读取方式一、浮点家族floatdoublelong double常见浮点数的表现形式3.1415926(小数形式写法)1E10(科学计数法)注意:浮点数表示的范围在float.h中定义浮点型在内存中的表现形式先看下面一段代码,因为浮点型在内存中的存储方式与整型不同,所以内存中同样的内容,用不同的类型读取得到的结果不一样。int main(){ int.
2022-05-26 22:18:28
142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人