- 博客(42)
- 收藏
- 关注
原创 C++类和对象(上)
• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。• C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是。
2024-07-21 23:20:41
437
原创 初识C++(二)
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。⽐如:就像周树人和鲁迅是同一个人一样的道理引用的格式为**类型& 引⽤别名 = 引⽤对象;**这里和取地址用的同样的符号,用的时候要注意区分一下现在我们来举一个例子看看。
2024-07-10 16:27:59
1065
原创 数据机构--二叉树-堆
我们先来看一张树的图片,**树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。**把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继因此,树是递归定义的。树的结构就像这样,如果像下面这种非线性的数据结构,就不能被称作树形结构。
2024-05-18 18:47:25
592
1
原创 数据结构--队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头我们可以画图来看看。
2024-05-14 13:58:34
681
原创 设计循环队列-C语言实现
设计你的循环队列实现。循环队列是一种线性数据结构,其操作表现基于FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k。Front: 从队首获取元素。如果队列为空,返回 -1。
2024-05-13 23:13:01
724
原创 数据结构--栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守LIFO(Last In First Out)的原则。后进先出的意思是,后进入的数据在出栈的时候最先出来栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。
2024-05-08 18:02:37
521
1
原创 牛客题-链表内区间反转
接下来就是反转链表了,p1就是反转链表的头节点我们要用一个while循环来控制p1当p1不等于要反转的区间的尾节点,这里个反转链表的思路是重点。这道题我们的思路是先找到要反转的区间的范围,在通过改变链表指针的指向来反转链表,在把反转链表的头节点和尾节点与原链表相连,我们来画图看看。这段代码就是判断特殊情况的,当prev为空的时候,就证明这个反转区间就是从链表头开始的,链表头节点就是反转链表的开始。接下来就是链接链表了,这时候我们反转完的头节点应该是p1我们就把我们存放的prev节点的下一个节点->p1。
2024-05-05 11:26:59
233
1
原创 关于链表带环问题为什么要用快慢指针
我们就拿走3步来说说,链表的长度为y我们假设长度为11,假设快指针和慢指针之间的距离长度为X,我们假设一个是7 ,快指针每次走3步,他们之间的距离就减去3,变成4,4在减去3,变成1,然后又减3变成-2,变成负数之后就相当于开始新一轮的追击了两个指针之间的距离就是,链表长度y-2就是9,9一直减去3就变成0,他们两个指针还是追上了。3,1,-1当到-1时他们又开始新一轮的追击然后他们之间的距离就变成链表长度-1变成10,是偶数,最终偶数-2就会变成0,他们两个追上了。如果链表无环,则返回 null。
2024-05-04 12:08:42
613
1
原创 C语言游戏实现——贪吃蛇
Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外, 它同时也是⼀个很⼤的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就Microsoft Windows32位平台的应⽤程序编程接⼝。
2024-04-23 15:44:25
1132
3
原创 C语言数据结构-双链表
我们根据名字来判断双链表有两个链,也就是两个指针,两个指针分别指向当前节点的下一个链表以及上一个链表,就像下面这张图。
2024-04-16 14:26:32
927
1
原创 C语言单链表详解
总的来说顺序表的底层是数组,而链表的底层是指针也就是地址,数组在内存中是连续存放的,所以顺序表的随机访问性要比链表好,而链表是以地址的方式存放在内存中,有可能一个空间与另一个空间的地址离的非常远,以指针的形式进行访问,所以随机访问性比较差,一节动车组是由8节车厢组成,车厢与车厢之间不能编组,他们8节就是一个整体就像数组一样,而火车就不同了,火车车厢之间可以灵活编组,就像链表的各个节点一样。
2024-04-15 11:44:49
865
2
原创 C语言实现通讯录
我们需要使用C语言创建一个通讯录,要用通讯录具体实现存储联系人的地址,姓名,电话,性别,年龄要求我们要使用动态内存分配,通讯录存放了多少人就占多少个空间1.增加联系人2.删除联系人3.修改联系人4.查找联系人5.展示联系人。
2024-04-06 11:57:24
652
3
原创 C语言数据结构初阶-顺序表
顺序表是一种数据结构它使用计算机内存中的一组地址连续的存储单元来存储线性表的元素。这种存储方式使得线性表中逻辑上相邻的数据元素在物理存储位置上也相邻,通过这种方式,顺序表可以高效地执行插入、删除、查找等操作。顺序表的主要优点包括动态分配空间、支持随机访问元素,以及逻辑顺序与物理顺序的一致性。顺序表可以分为静态和动态两种形式,静态顺序表适用于元素数量固定的情形,而动态顺序表的大小可以根据需要调整。
2024-04-04 22:25:19
657
1
原创 C语言交换二进制位的奇数偶数位
我们要先把想要交换的数的二进制位给写出来假如交换13的二进制位,13的二进制位是然后写出偶数位的二进制数(偶数位是1的)然后写出奇数位的二进制数(奇数位是1的)最后把奇数位的二进制数,和偶数位的二进制数都和原来的数进行然后奇数位向>>1向右移动1位就挪到了偶数位,偶数位向<<1向左移一位就挪到了奇数位,最后两个移动完的二进制位按位或就得到了奇数偶数位互换,像这张图下面是代码为什么打印出来是反的,那是由于在VS2022下是小端字节序存储是倒着存放的0x5555555555555555就是奇数位。
2024-03-31 21:39:31
220
1
原创 C语言预处理详解
下面我们来讲一下define定义常量的基本语法5//把5替换成number# define stu student//这样把命名简化break;case//在写case时自动加上breakfor;;//更加形象化# define number 5 //把5替换成number # define stu student //这样把命名简化 # define CSAE break;case //在写case时自动加上break # define DO_FOREVER for(;;
2024-03-31 11:41:48
867
原创 C语言分支循环语句详解
在我们写程序的时候,总会遇到想一直循环执行某种语句的时候,这时候我们就要使用一种语句叫循环语句,或者带一些判断条件的语句,在C语言中提供了像这些的循环语句和分支语句。
2024-03-28 22:47:25
1131
3
原创 编译和链接
也就是在这个阶段为下面的链接,做好了准备首先打开头文件,将头文件的内容插入到源文件中,还有替换宏定义,也好比是做饭这一步骤就相当于出来菜品,准备好。来看看下面的代码。
2024-03-28 21:07:04
674
原创 C语言文件操作详解
在我们日常使用的电脑上我们在电脑磁盘上会看到许许多多的文件夹,那里面的东西其实就是文件,为什么我们要使用文件?那是因为我们的电脑肯定会要用来存储东西的,如果没有文件,那么我们的东西都全部存放在内存上面,如果电脑一关机那么全没了,所以就需要一个文件来存放我们想永久存放的东西文件也分很多种类型比如程序文件,程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows环境后缀为.exe)。
2024-03-27 20:15:22
1429
3
原创 atoi函数详解
在c++官网中是这样介绍atoi函数的通俗的讲就是把字符串中的字符数字转换为整形数字,遇到空格就跳过,如果在字符串开始遇到不是有效的整数比如说abc就直接返回0,如果遇到像这种情况123abc345这个就只返回123,这个函数包含在stdlib.h头文件里我们来试一下。
2024-03-25 09:45:57
784
4
原创 C语言动态内存管理
在我们平时写C语言程序时,一般在设置变量空间大小时是设置死了的比如在设置数组的时候必须要有一个长度,每一个变量要有一个具体的值像这样这就是我们平常写的代码,这些内存空间的申请都是在栈上申请的在栈上申请的空间大小是固定的,有以下两个特点1.空间开辟⼤⼩是固定的。2.组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。
2024-03-23 13:42:01
1080
1
原创 C语言结构体
在C语言中给我们提供了一些数据类型,比如int,char,double,float等数据类型,但这些数据类型并不能够满足我们的所有需求,假如说我们要描述一个学生,或者一个商品,那这些数据类型肯定不够我们使用C语⾔为了解决这个问题,增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型。
2024-03-20 16:23:46
986
1
原创 内存函数memcpy和memmove的讲解
我们可以看到在c++官网是这样定义的这个就可以用来在有重叠的空间进行拷贝内容,我们来看看是怎么用的他包含的头文件还是string.hint main()i < 10;运行结果这里我们在同一内存空间成功拷贝了,接下来看看模拟实现= NULL);运行结果。
2024-03-17 21:12:42
661
2
原创 数据在内存中的存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的高地址处。在了解数据在内存中的存储之前我们要先了解一个东西,这个东西就叫原码反码和补码,
2024-03-17 17:51:10
1011
2
原创 C语言strcmp函数讲解
在cplusplus官网上是这样介绍strcmp函数的这里的意思是假如我们输入两个字符串一个是abcdef另一个也是abcdef他们两个字符的每个元素的ascii码值进行比较如果两个元素的ascii码值都相等就移动到下一个元素a与a进行比较b与b进行比较直到遇到\0为止,下面我们来看看这个图片;这里的意思是如果第一个字符串大于第二个字符串就返回一个大于0的数字,如果两个字符串相等就返回0,如果第一个字符串小于第二个字符串就返回一个小于0的数字,我们来看看这段代码。
2024-03-12 22:33:37
1059
1
原创 C语言指针详解
同理,在计算机中也是这样的,把计算机中的内存划分成一个一个的内存单元每个单元的大小取一个字节一个字节就是8比特,其中每个内存单元就像在城市中一户人家的地址,每个内存单元也有属于自己的编号有了这个内存单元编号CPU才能更好的快速的找到一个内存空间,在生活中我们把你住的地方叫做地址,同样在计算机中内存单元的编号也叫地址,在。这里我们发现一级指针p存放的是a的地址,而二级指针pp存放的是一级指针的地址,我们同样也可以解引用从二级指针解引用得到的是一级指针的地址,在把一级指针解引用得到的是a的地址。
2024-03-08 21:39:53
932
2
原创 单词倒排牛客题(简单的一个版本)
对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;数据范围:字符串长度满足 1≤�≤10000 1≤n≤10000题目还是挺简单的,只要理清楚每一步该做什么就行了,一步一步来。
2024-02-27 18:11:34
479
原创 单身狗2解题思路
这道题主要要让我们求出在一个数组中只出现1次的两个数,下面有两种解题思路一种是利用排序算法,把整个数列排成一个有序数列在两两进行比较,还有一种是利用异与的方式进行,本片重点讲异与方式。总的来说这两种方法都可行的,但第二种更有意思一些,也富有挑战性。
2024-02-04 15:55:44
1016
2
原创 C语言求100到任意位数的水仙花数
这篇文章主要展现了如何求100到任意位数之间的水仙花数提示:以下是本篇文章正文内容。水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1*1*1+5*5*5+3*3*3,则153是一个“水仙花数”。但这篇文章不仅仅只计算三位数,还要实现输入任意值来判断这个数满不满足水仙花数成立的条件。
2024-01-26 10:56:52
649
2
原创 C语言选择排序
选择排序的基本思路是锁定一个假定的最小值,通过遍历数组把锁定的值和其他数值进行比较,找出最大或最小的,与指定的位置交换数据。就像我们平时生活中站队时一样选中一个队员挨个挨个与其他队员进行比较找出最矮的那一个或者最高的站在队伍的最左边或者最右边,选择排序也类似如此。提示:以下是本篇文章正文内容以上就是选择排序的基本思路,希望对大家有所帮助。
2024-01-03 13:27:45
550
1
原创 C语言打印x形图案
我们可以首先定义一个x轴和一个y轴,x表示横坐标,y表示纵坐标,我们一般做这种题时会有一个误区可能会去找空格之间的规律,但这道题我们可以反过来去找*号之间的规律,仔细观察一下我们不难发现 当x = y时就会有*号出现,这样我们的正斜杠*号就打印完成了,那么反斜杠怎么打印呢?我们这道题假设是输入5 ,那么就要在5X5的空间里面打印斜杠*号,我们先来看看坐标为5,1的*号,可以发现当X轴的坐标与y轴的坐标相加时,就等于输入的5在减去1就等于4,也就是说当。针对每行输入,输出用“*”组成的X形图案。
2023-12-29 13:40:56
449
1
原创 C语言在一个有序数组里,插入一个数,并且使数组顺序不变
这是要有序数列,在此基础之上插入一个数字,使其顺序不变,首先我们需要知道我们怎么样插入才能让他顺序不变,那么我们需要进行比较,可以看看下面的这张图我们这里定义了一个数组可以存放7位数,但我们只放了6位,那是因为我们需要插入一个新的数,那么在这个数之后的数就要都向后移动一位形成新的数组,也可以理解为给新输入的数据的一个存放空间假如说我们输入要插入的数为5原始数组为那么我们可以从数组最后面,也就是从数组中最大的7开始比较7大于5那么7向后移动一位变成这样。
2023-12-26 22:33:16
2107
1
原创 C语言二分查找
二分查找又称折半查找,对于一个有序的升序数列查找会提升查找效率,以及节约算力是一个非常有用的查找方法。在日常生活中我们也经常用到二分查找,比如说如果某一个人要你猜一猜他买的一个电脑多少钱,你不可能从1块两块开始猜,一般都会猜三四千,四五千,同时让你猜的那个人也会告诉你猜大了还是猜少了,假如说一台电脑七千块,猜的范围是在一千到八千,那么你最先开始猜的如果是四千那么让你猜的那个人肯定会说猜小了,那么你下一次猜肯定是在四千往上八千以内,同样二分查找也是这个原理。
2023-12-20 22:31:25
949
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人