自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 数据结构 红黑树和set/map

set 与multiset 的区别: set 不能存相同元素, multiset 可以存相同的元素,其余的使⽤⽅式完全⼀致。因此,我们有时候可以⽤set 帮助我们给数据去重。在这⾥只练习使⽤set。set 会⽤, multiset 也会⽤。

2025-02-16 20:09:54 974 1

原创 数据结构 堆和priority_queue

堆(heap),是⼀棵有着特殊性质的完全⼆叉树,可以⽤来实现优先级队列(priorityqueue)。堆需要满⾜以下性质:1. 是⼀棵完全⼆叉树;2. 对于树中每个结点,如果存在⼦树,那么该结点的权值⼤于等于(或⼩于等于)⼦树中所有结点的权值。如果根结点⼤于等于⼦树结点的权值,称为⼤根堆;反之,称为⼩根堆。

2025-02-16 19:55:31 665

原创 数据结构 二叉树

⼆叉树是⼀种特殊的树型结构,它的特点是每个结点⾄多只有2棵⼦树(即⼆叉树中不存在度⼤于2的结点),并且⼆叉树的⼦树有左右之分,其次序不能任意颠倒。⼆叉的意思是这种树的每⼀个结点最多只有两个孩⼦结点。注意这⾥是最多有两个孩⼦,也可能没有孩⼦或者是只有⼀个孩⼦。注意:⼆叉树结点的两个孩⼦,⼀个被称为左孩⼦,⼀个被称为右孩⼦。其顺序是固定的,就像⼈的左⼿和右⼿,不能颠倒混淆。⼀棵⼆叉树的所有⾮叶⼦节点都存在左右孩⼦并且所有叶⼦节点都在同⼀层上,那么这棵树就称为满⼆叉树。

2025-02-14 16:45:27 800

原创 数据结构 树的存储和遍历

树的定义树型结构是⼀类重要的⾮线性数据结构。• 有⼀个特殊的结点,称为根结点,根结点没有前驱结点。• 除根结点外,其余结点被分成M个互不相交的集合T1 、T2 、...、Tm T,其中每⼀个集合⼜是⼀棵树,称这棵树为根节点的⼦树。因此,树是递归定义的。• 结点的度:树中⼀个结点孩⼦的个数称为该结点的度。• 树的度:树中结点最⼤的度数称为树的度。• 树的⾼度(深度):树中结点的最⼤层数称为树的⾼度(深度)。

2025-02-14 16:17:04 1218

原创 数据结构 栈和队列

栈是⼀种只允许在⼀端进⾏数据插⼊和删除操作的线性表。• 进⾏数据插⼊或删除的⼀端称为栈顶,另⼀端称为栈底。不含元素的栈称为空栈。• 进栈就是往栈中放⼊元素,出栈就是将元素弹出栈顶。如果定义了⼀个栈结构,那么添加和删除元素只能在栈顶进⾏。不能随意位置添加和删除元素,这是栈这个数据结构的特性,也是规定。

2025-02-13 16:38:36 1160

原创 数据结构 双链表的模拟实现

(必须是最后一步)

2025-02-11 18:58:28 617

原创 数据结构 单链表的模拟实现

1. 两个⾜够⼤的数组,⼀个⽤来存数据,⼀个⽤来存下⼀个结点的位置2. 变量h ,充当头指针,表⽰头结点的位置3. 变量id ,为新来的结点分位置int h;// 头指针int id;// 下⼀个元素分配的位置// 数据域和指针域// 下标 0 位置作为哨兵位// 其中 ne 数组全部初始化为 0,其中 ne[i] = 0 就表⽰空指针,后续没有结点。

2025-02-11 17:56:38 585

原创 蓝桥杯备赛——“双指针”“三指针”解决vector相关问题

③当扫描到2的时候,我们想把它放到最后一个区间中,因此我们交换i和right-1,然后right--。在cur 遍历期间,使[0, dest] 的元素全部都是⾮零元素,[dest + 1, cur − 1] 的元素全是零。②当扫描到0的时候,我们想把它放到第一个区间中,因此我们可以让i和left+1进行交换,然后left++,i++。根据 在扫描的过程中,遇到的不同情况,分类处理,实现数组的划分。的初始⻓度为 ,其中前 个元素表⽰应合并的元素,后 个元素为 ,应忽。函数对其进行处理,最后输出处理后的向量。

2025-02-10 21:11:55 1390

原创 数据结构 动态顺序表-vector

利⽤迭代器可以访问整个vector ,存在迭代器的容器就可以使⽤范围for 遍历。2. empty :返回顺序表是否为空,因此是⼀个bool 类型的返回值。底层实现的时候,会遍历整个元素,⼀个⼀个删除,因此时间复杂度:O(N)。• 如果⼤于原始的⼤⼩,多出来的位置会补上默认值,⼀般是0。2. end :返回终点位置的下⼀个位置的迭代器(右开);• 如果⼩于原始的⼤⼩,相当于把后⾯的元素全部删掉。时间复杂度:O(1)。时间复杂度:O(1)。时间复杂度:O(1)。时间复杂度:O(N)。

2025-02-10 19:55:57 518

原创 数据结构 顺序表及其实现

线性表是n 个具有相同特性的数据元素的有序序列。

2025-02-10 19:46:07 333

原创 数据结构 算法时间复杂度和空间复杂度

【事前分析法】算法设计好后,根据算法的设计原理,只要问题规模确定,算法中基本语句执⾏次数和需求资源个数基本也就确定了。⽐如求1 + 2 + 3 + ... + n − 1 + n ,可以设计三种算法:算法A:需要开辟⼀个⼤⼩为N 的空间。算法B:不需要开辟空间,直接求和。需要循环n 次,ret + = n 语句会执⾏n 次,⽽且随着问题规模的增⻓,执⾏次数也会增⻓。算法C:不论问题规模为多少, 语句只会执⾏1 次。

2025-02-09 16:11:28 899

原创 C++ 动态内存管理new和delete

• new 负责申请内存, new 操作符返回的是申请到的内存空间的起始地址,需要指针存放。◦ new申请⼀个变量的空间, new[] 申请⼀个数组的空间。其实数组是连续的空间, new[] 申请到的空间也是连续的,那上述代码中 ptr 指向的空间能不能使。◦ delete 负责释放⼀个变量的空间, delete[] 释放⼀个数组的空间。• new 和delete 配对, new[] 和delete[] 配对使⽤。⽤数组的形式访问呢?C++中通过 new 和 delete 操作符进⾏动态内存管理。

2025-02-08 14:26:24 109

原创 C++ 结构体排序 - sort

/版本1//void sort(开始位置,结束位置);//first:指向要排序范围的第⼀个元素的迭代器或者指针。//last:指向要排序范围的最后⼀个元素之后位置的迭代器或者指针。//版本2comp);//void sort(开始位置,结束位置,⾃定义排序函数);//first:指向要排序范围的第⼀个元素的迭代器或者指针。//last:指向要排序范围的最后⼀个元素之后位置的迭代器或者指针。//comp:是⼀个⽐较函数或者函数对象。

2025-02-08 14:14:35 572 1

原创 C++ 结构体的成员函数

C++中的结构体和C语⾔结构体的有⼀个⽐较⼤的差异就是:C++中的结构体中除了有成员变量之外,还可以包含成员函数。1. C++的结构体会有⼀些默认的成员函数,⽐如:构造函数、析构函数等,是编译器默认⽣成的,如果觉得不合适,也是可以⾃⼰显⽰的定义这些函数,这些函数都是⾃动被调⽤,不需要⼿动调⽤。2. 除了默认的成员函数之外,我们可以⾃⼰定义⼀些成员函数,这些成员函数可以有,也可以没有,完全根据的实际的需要来添加就可以。3. 这些成员函数可以直接访问成员变量4. 成员函数的调⽤也使⽤操作符。

2025-02-08 13:59:42 334

原创 C++ 原码、反码、补码和位操作符

其实说到 2 进制,在计算机内部,数值是以 2 进制的形式来进⾏表⽰和存储。后⾯要讲解的位运算的 操作符就是针对整数的⼆进制来进⾏运算的。所以下⾯讲解⼀下整数的 2 进制表⽰形式。移位运算符:>>位运算符 : & | ^整数的 2 进制表⽰⽅法有三种,即原码、反码和补码;整数分为有符号整数(signed)和⽆符号整数 (unsigned)。

2025-02-06 16:19:52 1155

原创 蓝桥杯备赛——进制转化相关问题

num表示要转换的十进制数,base表示目标进制。函数的主要作用是将十进制数num转换为base进制数并输出。main函数是程序的入口,负责从用户那里获取要转换的十进制数和目标进制,然后调用transfer函数进行转换。

2025-02-06 10:23:45 1261

原创 蓝桥杯备赛题目练习(一)

王老师希望尽量减少输入的工作量,比如 5+8 的算式最好只要输入 5 和 8,输出的结果要尽量详细以方便后期排版的使用,比如对于上述输入进行处理后输出 5+8=13以及该算式的总长度 6。若该行为三个数据则第一个数据表示运算类型,a 表示加法运算, b 表示减法运算, c 表示乘法运算,接着的两个数据表示参加运算的运算数。3. 第三次输入 `5 6`:沿用上一次操作符 `b`(减法),结果为 `-1`,表达式长度 8。- `op` 可以是操作符(`a`/`b`/`c`)或第一个操作数(数字)。

2025-02-04 19:44:30 886

原创 C++ string超详解!!(小白也能看懂)

substr() 函数⽤于截取字符串中指定位置指定⻓度的⼦串。函数原型如下://pos 的默认值是0,也就是从下标为0的位置开始截取//len 的默认值是npos,意思是⼀直截取到字符串的末尾substr() :如果函数不传参数,就是从下标为0的位置开始截取,直到结尾,得到的是整个字符串;substr(pos) :从指定下标 pos 位置开始截取⼦串,直到结尾;substr(pos, len) :从指定下标 pos 位置开始截取⻓度为 len 的⼦串。

2025-02-03 17:27:57 1221

原创 C++ 字母大小写转换两种方法&统计数字字符的个数

字符分类函数和字符转换函数:https://legacy.cplusplus.com/reference/cctype///判断字符是否是⼩写字⺟//转换成⼩写字⺟islower 是C/C++中提供的⼀个判断字符是否是⼩写字⺟的函数,如果参数 c 是⼩写字⺟,函数返回⼀个⾮0的数字,如果不是⼩写字⺟,函数返回0,其实还有⼀个函数是 isupper ,是判断⼤写字⺟的。tolower 是C/C++中提供的⼀个将参数 c 从⼤写字⺟转化成⼩写字⺟的函数,通过返回值返回转换。

2025-02-01 20:52:52 420

原创 C++ strcpy和strcat讲解

⽐如: char arr1[20] = "hello ";//这样也是不⾏的 1 2 3 4 那怎么办呢?就⾏整型数组中,我们说的过⼀样,这⾥也是不⾏的。那么如何将arr1中的字符串,拷⻉到arr2中呢?其实C/C++中有⼀个库函数叫strcpy,可以完成。//destination - 是⽬标空间的地址。//destination - 是⽬标空间的地址。//source - 是源头空间的地址。//source - 是源头空间的地址。//需要的头⽂件 <cstring>//需要的头⽂件<cstring>

2025-02-01 20:30:07 365

原创 C++解决输入空格字符串的三种方法

1. gets 是从第⼀个字符开始读取,⼀直读取到 \n 停⽌,但是不会读取 \n ,也就是读取到的内容中没有包含 \n ,但是会在读取到的内容后⾃动加上 \0。2. fgets 也是从第⼀个字符开始读取,最多读取 num-1 个字符,最后⼀个位置留给 \0 ,如果num 的⻓度是远⼤于输⼊的字符串⻓度,就会⼀直读取到 \n 停⽌,并且会读取 \n ,将 \n 作为读取到内容的⼀部分,同时在读取到的内容后⾃动加上 \0。

2025-02-01 18:04:22 1070

原创 C++ memset设置数组内容和memcpy拷贝数组内容的介绍与使用

主要原因是 memset 函数是给每个字节设置 value 值,⽽⼀个整型元素占⽤4个字节,⼀个整型的 每个字节都被设置为1,⼆进制就是: 00000001000000010000000100000001 ,转换成⼗进制 就是: 16843009 ,因此结果是不符合预期的。C++中有⼀个库函数 memcpy 可以做数组内容的拷⻉,当然 memcpy 其实是⽤来做内存块的拷⻉ 的,当然⽤来做数组内容的拷⻉也是没问题的。memset 是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容,需要头⽂件。

2025-01-31 18:09:44 627

原创 C++范围for和auto关键字

for ( 类型 变量名 : 数组名 )语句 //多条语句需要加⼤括号。

2025-01-31 16:57:11 586

原创 蓝桥杯——竞赛省赛国赛题分享

蓝桥杯——竞赛省赛国赛题分享

2024-12-19 20:08:31 10530 84

原创 C语言——结构体(超详解)

C语言——结构体(超详解)

2024-12-14 21:46:37 2643 53

原创 C语言——判断输入字符串是否合法代码分享

C语言——判断输入字符串是否合法代码分享

2024-12-14 17:12:17 796 15

原创 C语言——字符串指针变量与字符数组(易错分析)

C语言——字符串指针变量与字符数组(易错分析)

2024-12-09 11:20:03 2341 50

原创 C语言——习题练习(一)

C语言——习题练习(一)

2024-12-03 23:28:36 1191 45

原创 C语言——指针初阶(三)

C语言——指针初阶(三)

2024-11-30 15:25:13 1450 41

原创 C语言——指针初阶(二)

本节主要对C语言——指针初阶(一)的一些内容进行补充,并主要讲解数组指针。

2024-11-29 23:47:02 1182 21

原创 C语言——海龟作图(对之前所有内容复习)

C语言——海龟作图(对之前所有内容复习)

2024-11-28 22:59:54 2251 25

原创 C语言——指针初阶(一)

C语言——指针初阶(一)

2024-11-27 22:27:28 1267 21

原创 C语言函数递归经典题型——汉诺塔问题

C语言函数递归经典题型——汉诺塔问题

2024-11-26 22:59:11 1377 13

原创 C语言——数组基本知识(二)

C语言——数组基本知识(二)

2024-11-25 09:50:04 2912 7

原创 C语言——数组基本知识(一)

C语言——数组基本知识

2024-11-24 14:54:42 1143 8

原创 C语言——数组逐元素操作练习

C语言——数组逐元素操作练习

2024-11-22 22:19:08 760 2

原创 C语言编程练习:验证哥德巴赫猜想 进制转换 rand函数

如果输入一个数N,随机输出一个数介于a,b之间,则a+(int)rand()%(b-a+1)。Ø。

2024-11-15 20:04:22 1224 4

原创 C语言——函数基本知识(三)

上篇文章我们介绍了函数递归的使用,接下来我们再来讲解一些有关递归的习题。

2024-11-08 15:55:36 1858 4

原创 C语言——函数基本知识(二)

1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数 声明决定不了。2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。3. 函数的声明一般要放在头文件中的。函数的定义是指函数的具体实现,交待函数的功能实现。

2024-11-04 22:29:53 1173

原创 C语言 ——函数基本知识(一)

数学中我们常见到函数的概念。但是你了解C语言中的函数吗?维基百科中对函数的定义:子程序 在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method, subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组 成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。

2024-10-31 18:09:22 1715 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除