自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 set与map

在STL中实现了树形结构(红黑树)和哈希结构(哈希桶)两种管理式结构。其中树形结构主要有set、map、multiset、multimap四种。

2024-07-08 13:50:18 358

原创 平衡二叉搜索树/AVL树

左右子树高度差的绝对值不超过1。(即左右子树高度差取值为-1,0,1)且左右子树均为VAL树右子树的值大于左子树的值当有序(升序或降序)地插入时,搜索二叉树就会出现下图的情况,搜索次数从树的高度次退化成n次。而平衡搜索二叉树就解决了这一问题。

2024-06-29 23:13:01 840

原创 搜索二叉树的概念及实现

搜索二叉树规则(左小右大):如图:在搜索时,若大于根,则去右子树寻找;若小于根,则去左子树寻找。直到找到或为空结束。在理想状态下只需查找树的高度次。

2024-06-13 11:27:18 906

原创 常见的多态面试题

注意:重写是指重写函数体。如下图,有这么一道题:b通过虚函数表调用了继承的test(),test()又通过虚函数表找到自己的(重写的)func()结果打印出来的结果却是B:1,其使用的缺省值是A类中的func()的缺省值,所以实际上b调用func函数时使用的是自己的函数体,声明却是使用原声明。return 0;

2024-06-04 12:04:03 313

原创 Linux文件系统的理解

文件 = 内容 + 属性(属性本质是也是数据)

2024-05-20 17:25:07 1035

原创 Linux软硬链接及动静态库

所以软连接可以看作是创建一个快捷方式。

2024-05-20 12:25:06 499

原创 优先队列priority_queue的特性与使用

优先队列是队列的一种。从模板参数上去看优先队列比队列多了一个模板类less,这个less主要是为了实现伪函数,而这个仿函数则是规定优先级高低的规则。优先规则也可以根据需要进行自定义。在接口的使用上完全一致,只是优先队列有出队列的优先级限制。

2024-05-13 12:32:34 350

原创 C++——list的特性及使用

STL中的list是指,list每个元素的存储相互独立,因为其节点存储位置独立不连续,其插入和删除不需要挪动其他元素效率比起vector更高。但也因为存储空间不连续的问题,不能做到和vector一样的随机访问。

2024-05-06 11:29:26 359

原创 C++——vector的特性与使用

vector是一个封装了动态数组的顺序容器,vector可以存储各种类型的数据。

2024-05-02 19:46:28 967

原创 C++ —— 继承

继承是指一种代码可以被复用的机制,在一个类的基础上进行扩展,产生的新类叫做。

2024-04-21 22:18:45 647

原创 Linux 进程

注意: 不仅仅可以用来替换成系统指令,也可以替换成自己写的代码。

2024-04-11 00:56:02 929

原创 string类的模拟实现

用传入参数的 _str 作为参数运行构造函数,让 tmp 帮我们开空间、拷贝数据,然后再让tmp和this交换,如此便实现了this的构造,同时在退出拷贝构造时,tmp会自己调用析构函数。:_str 多开了一个空间是用来存放 \0 的,缺省参数处的 "" 表示空串。注意,只有 n 大于原来的容量时才扩容,并且扩容不影响大小 _size。写法与输入流基本无差异,循环的判断条件处去掉了不是空格的判断。将数据往后挪动,腾出一个位置插入新字符即可。传统写法就是老老实实自己开空间,拷贝数据。

2024-03-25 18:43:12 938

原创 Linux——gdb的使用

平时使用的编译器自带调试功能,而在Linux下我们使用gdb来进行调试。GDB 全称“GNU symbolic debugger是Linux常用的程序调试器。调试的前提是这个程序含有调试信息,否则是无法调试的。gcc -o test test.c 这样生成的可执行程序不带调试信息,无法调试。gcc -o test-debug test.c -g 想要生成的可执行程序可以调试只需要加上 -g 选项即刻。

2024-03-12 13:44:42 342

原创 C++——模板类

template 类声明在编译阶段,编译器会根据类型形式参数列表确定产生怎么样的类。简单地说就是在编译阶段编译器根据模板类生成了很多类型不同的类,大大减少了重复的代码量。public:~SeqList()cout

2024-03-05 11:17:20 331

原创 C++内存分配管理

与new不同的是,new[] 申请内存时会多分配 sizeof(size_t) 的内存大小来记录数组的元素个数,这样 delete[] 才能准确知道调用多少次析构函数。注:new/delete与malloc/free在内置类型上区别不大,主要在用法上略有不同。同理,new[] 就是先执行 operator new[] 再执行n次构造。先析构再回收内存是为了防止对象的成员有申请的内存没有回收造成内存泄漏。如果用 delete 来释放 new[] 申请的内存会出错。

2024-03-02 21:19:37 343

原创 初识C++

对于内联函数来说,主要是省去了建立栈帧和销毁栈帧的消耗,等于在调用函数的地方运行等价的表达式。由于函数重载和内联函数的存在,宏在C++的意义也不大了。

2024-02-25 21:29:36 959 1

原创 C语言——排序

计数排序,创建一个数组count,将数据作为下标来访问数组count,然后通过数组count记录个数,然后遍历数组count,只要数组count的值不为0,就将下标一个一个赋值给原数组。为了不浪费空间,开数组count前找到数据中的最大最小值,开辟的数组count大小为max-min+1。记录数据时这样一来,最小值的个数就存储在下标为0的地方,最大值存储在max-min也就是最后一个位置。最后赋值时记得将下标加回最小值。

2024-01-27 21:29:35 813

原创 数据结构——堆与堆排序

假设其深度为h,则除了第h层外,其余层的结点数均饱和,第h层的结点可以饱和可以不饱和(注:满二叉树是一种特别的完全二叉树),且结点总是从左到右连续。

2024-01-18 11:49:22 386 1

原创 数据结构——树与二叉树

/便于修改要存储的数据//存储数据//左孩子(左子树根结点)//右孩子(右子树根结点)}BTNode;

2023-12-31 20:03:32 875 1

原创 linux——基本指令、重定向、命令行管道

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。若mv命令中第二个参数类型是目标文件或者是目标目录,mv命令将文件重命名或将其移至一个新的目录中。管道是可以级联多条命令的,每条命令的结果输出,都作为输入,导入下一条命令。概念:将本该输出到屏幕上的内存,重新定向到某个指定的文件中。例:mkdir -p a/b/c/d/e。

2023-12-05 17:54:11 941

原创 数据结构——栈与队列

队列是一种一端进行插入,另一端进行删除的线性表。队头是进行删除操作的一端。队尾是进行插入操作的一端。所以队列是先进先出的线性表。

2023-11-25 18:36:42 354

原创 数据结构——链表

当你释放掉最后一个节点的空间时,你会发现原来的倒数第二个节点的next无法赋值为NULL。:内存分配更加灵活,不会出现空间浪费,需要一个节点创建一个节点,也可以只释放(free)一个节点的空间;查找就相对简单,只要从头到尾遍历一次,其中有与查找目标x相同的数据就返回其地址,循环结束都找不到就返回NULL。2.之后就简单了,释放最后一个节点的空间,并将cur->next赋值为NULL就完成尾删了。2.提前存储好下一个节点地址后,释放原头指针地址的空间,最后让头指针指向新的第一个节点。这样的操作是不合法的。

2023-11-17 13:03:03 26

原创 c语言——程序环境与预处理

可能有人会好奇,为什么要添加如此多的括号。接下来我一一举例。如图,我们预想的结果应该是36,即为3x(3x4),但因为#define是直接替换,所以导致其变成了3*2+1*1+3,按照优先级先算了乘法。所以要在x*y加上括号变成(x*y)。在以下代码中,即便改成(x*y)也还不行,替换时变成了3x(2+1*1+3),括号内部仍未变成我们想要的3x4,括号内的结果为6。所以正确的做法应该是改成((x)*(y)).另外,像x+,++x,x--,--x这类自加自减的参数万不可扔进宏里,天知道他会自加自减多少次。

2023-10-23 11:00:43 32

原创 C语言——文件操作

今天为大家讲解的是文件操作,可能有人好奇写个代码又跟文件有什么关系。请大家回忆一下,以往写的代码,特别是需要存储一些数据程序。你会发现每次程序结束,你输入的数据都无法存储。而文件能够在程序结束后存储数据,下次再使用又可以读取数据,这便是文件操作的意义。

2023-10-21 21:08:07 588 1

原创 c语言——字符串函数

strlen返回字符串的长度,但不包括\n,如果使用操作符sizeof则会算上\n所占的空间。注:sizeof算的是大小,不是长度,只是char类型大小恰好是一个字节。

2023-10-05 11:36:09 48

原创 C语言——自定义类型

struct book //类型声明int price;}a;//定义全局变量astruct Stu //类型声明int age;//结构体嵌套初始化int main()//给变量a赋值//局部变量b的初始化(初始化:定义变量的同时赋值)return 0;enum Day//星期Mon=1, //默认为0,下面的成员都是前一个成员+1Tues, //一次性创建若干个常量Wed,Thur,Fri,Sat,Sunint main()int a;switch(a)

2023-10-02 12:29:46 37 1

原创 C语言——函数

与库函数不同,自定义函数需要程序员自己来设计。return a+b;该自定义函数实现了计算两个数的和,Add是函数名,Add前面的int为返回类型,而括号中的为形参,在调用时要给予两个整形的参数。返回类型 函数名(形参)语句项;一般来说函数的声明通常放在头文件中(可以将自定义函数的声明放在自定义的头文件中)代码的读取是由上到下的,需先声明后使用。函数的声明至少要在函数调用之前。函数的定义是指函数的具体实现,交待函数的功能实现。

2023-09-05 10:41:35 27 1

原创 C语言——数据在内存中的存储

而负数让原码反转(即0变成1,1变成0)得到反码,反码+1得到补码。当E为全0时,E=1-127或者E=1-1023即为真实值。字符型char在数据中存储的是ASCLL码值,又因为ASCLL码值为整形,所以char属于整形家族。a为整形,大小为四个字节,有32个比特位可以用来存储,第32位表示正负,0为正,1为负。浮点数在数据中的存储很特别,虽然float和int的大小一致,但其存取的方式不一样。当E为全1时,如果有效数字M全为0,表示+-无穷大。构造类型是自定义的类型。存储的,并且存储的是。

2023-08-08 11:39:19 38 1

原创 C语言——指针

虽然该地址依旧存在,但随着跳出函数,临时变量也被销毁,该地址存储的内容又变回随机值。注:不知道给指针赋什么值时,可以赋值为NULL(定义上:NULL=0),即将指针赋值成空指针。

2023-08-03 11:37:58 47

原创 C语言——循环语句

因为当i等于3时,执行了continue跳过剩下的循环语句,进入判断部分,所以没有打印3。当i等于8时,执行了break直接跳出了循环(跳过整个for循环)所以没有打印8和9。在用写程序的过程中,难免会遇到需要重复多次执行的语句,要是重复去写不仅高质量大,也不好维护,而循环语句很好地解决这一问题。(2)所以在循环语句中要包含使判断条件越来越接近假的语句,否则条件恒为真造成死循环。,之后再对条件进行判断,为真则继续循环,否则跳出循环。(加深部分形成闭环,直到判断部分为假跳出循环。,用于循环条件的调整。

2023-07-22 11:28:16 56

原创 c语言——常量

使用#define预处理器可以在程序中定义一个常量,它在编译时会被替换为其对应的值。int main()//此处打印结果为100return 0;#define 定义常量是直接进行替换,而const 是通过修饰变量得到常变量。#define 是直接替换,所以没有数据类型编译器也无法对其进行类型检查,而const 可以,因为const 修饰的常量具有类型信息。#define 没有作用域限制,他在整个程序都有效,而cconst 有明确的作用域限制,只能在其定义的作用域使用。

2023-07-02 13:14:25 85 1

原创 初识C语言——变量

char 字符型short 短整型int 整型long 长整型long long 更长的整型float 单精度浮点型double 双精度浮点型不同类型的变量在初始化时的写法可能不一样。char a = 'a' 赋值单个字符时要用单引号括起来。

2023-06-17 09:41:48 53 1

原创 第一篇博客

3.如何学习:我每天都会腾出2到3小时的时间去学习,除了通过书籍、视频、和CSDN大佬的博客中获取新知识,也会到牛客网去做些题,一是巩固我所学到的,在写代码的过程中也找到自己的不足,同时也可以对比到其他人写的代码,锻炼自己的思维。1.自我介绍:CSDN的小伙伴们大家好,我是一名大一学生,专业的话是物联网。起初接触编程是在课堂上,后来通过自主学习后喜欢上了编程,也希望以后能从事编程类的工作。2.编程目标:掌握c/c++语言,同时熟悉一门脚本语言、并且深入地学习数据结构。4.最想进入的公司:最想去的是华为。

2023-06-11 10:39:02 43

空空如也

空空如也

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

TA关注的人

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