自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构与算法:栈和队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,挪动数据效率比较低,链表更适合对头部进行操作。但是我们一般采用的是数组来实现,因为栈的特性是后入先出,采用下标访问,比链表找尾效率要高很多。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

2024-07-09 12:41:07 297

原创 数据结构与算法:顺序表和链表

显然,通过宏替换或者是栈上直接开辟的数组对于长度是已经锁死了的,当数据足够庞大的时候,N为10不够,这时需要修改为比较大的值。其中数组(某种程度上可以认为是顺序表)在物理空间上是连续存储的,而链表是由不同的小块通过某些“记忆”顺次连接存储的,这些小块或连续,或不连续,但是在逻辑上都呈线性。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。在数组上完成数据的增删查改。链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

2024-07-09 09:29:56 931

原创 C++初阶:Stack和Queue类模拟实现

【代码】C++初阶:Stack和Queue类模拟实现。

2024-07-07 19:45:34 134

原创 C++初阶:List类的模拟实现

【代码】C++初阶:List类的模拟实现。

2024-07-02 13:04:48 165

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

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。随着科学技术的发展,计算机的存储容量已经达到了很高的高度,所以在现在我们不会特别的去关注一个算法的空间复杂度。得到的结果就是大O阶。

2024-06-23 20:30:23 689

原创 C++进阶:多态

如果基类的析构函数为虚函数,此时派生类析构函数只要定义,无论是否加virtual关键字, 都与基类的析构函数构成重写,虽然基类与派生类析构函数名字不同(其实也可以理解为编译器对基类和派生类的析构函数进行了一定的特殊处理,统一函数名为destructor)。虚函数的继承是一种接口继承,派生类继承的是基类虚函数的接口,目的是为了重写,达成 多态,继承的是接口。派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的 返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数。

2024-04-26 14:17:41 783

原创 C++进阶:继承

1.继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2024-04-20 19:01:59 901

原创 C++初阶:vector类的模拟实现(含模板)

【代码】C++初阶:vector类的模拟实现(含模板)

2024-04-04 21:22:53 377

原创 C++初阶:string类模拟实现

本节内容主要针对的是在STL之前的string类的实现,通过模拟实现string类的一些功能来更好地使用string。

2024-03-25 19:03:13 503

原创 C++初阶:浅识内存管理

int main()// new/delete 和 malloc/free最大区别是 new/delete对于[自定义类型]除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;

2024-03-20 18:45:57 418

原创 C++初阶:初识模板

class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public:// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表。

2024-03-20 18:05:46 833

原创 C++初阶:类和对象(五)const成员、&重载、static成员、友元、匿名对象、再谈构造函数

在上面的代码的运行结果中,我们可以看到d1调用了无const修饰的Print函数,而d2调用了有const修饰的Print函数,然后我们将无const修饰的Print函数注释后,再运行程序,发现d1调用了有const修饰的Print函数,这说明编译器会根据传入的指针类型的不同来进行合理的选择,这也印证了一点,const修饰同名函数可以构成函数重载。在前面,我们都是称其{}内的内容为对对象进行初始化,但是这并不是准确的,只能说我们通过{ }内的内容对对象的属性进行了赋值的操作。友元分为:友元函数和友元类。

2024-03-14 18:33:47 1138 1

原创 C++初阶:类和对象(四)运算符重载与日期类Date的实现

在本节,我将通过实现日期类Date的实现来进一步阐释运算符重载的内容。

2024-03-11 18:54:22 233 1

原创 数据结构与算法:顺序表(C++实现)

2.1 SeqList.cpp(函数)2.2 test.cpp(测试,入口)1 头文件 SeqList.h。

2024-03-10 19:28:28 390 1

原创 C++初阶:类和对象(三)——拷贝构造函数和运算符重载

观察上述代码,为了区分前置++与后置++,C++研发者规定了需要在后置++的参数列表中添加一个int型形参,在隐式使用时不需要传入参数,但是如果是显示调用时,需要手动补齐参数(运算符重载不允许使用缺省参数),下面的截图是前置++,你可以在()随便写一个值使其成为后置++。编译是成功的,诶,同拷贝构造函数一样,当只是涉及到值拷贝的时候,编译器自动生成的赋值运算符重载是足够的,但是当涉及到申请资源的时候,就会和拷贝构造函数一样,程序会崩溃啦~在下一节中,我将会通过日期类的实现来进一步地体现已有的类成员函数。

2024-03-10 19:03:11 1091 1

原创 C++初阶:类和对象(二)——构造函数和析构函数

但是main函数中不能直接调用Time类的析构函数,实际要释放的是Date类对象,所以编译器会调用Date类的析构函数,而Date没有显式提供,则编译器会给Date类生成一个默认的析构函数,目的是在其内部调用Time类的析构函数,即当Date对象销毁时,要保证其内部每个自定义对象都可以正确销毁main函数中并没有直接调用Time类析构函数,而是显式调用编译器为Date类生成的默认析构函数。而_t是Time类对象,所以在d销毁时,要将其内部包含的Time类的_t对象销毁,所以要调用Time类的析构函数。

2024-03-07 19:23:34 703

原创 C++初阶:类和对象(一)——类的创建与使用

class Name//类体:由成员变量和成员函数组成//分号是不可以省略的成员函数如果在类中定义,编译器可能会将其处理为内联(inline)函数int num;(2)类声明之后,类中函数在类外定义,此时需要加上::域限定作用符int num;在一般的情况下,我们更推荐采用第二种做法,便于适应日后工程化编程的需求。

2024-03-04 17:43:31 1325 1

原创 C++入门:内联函数、auto关键字(C++11)与for循环(C++11)

当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。// 该行代码会编译失败,因为c和d的初始化表达式类型不同。

2024-03-02 14:12:14 941

原创 C++入门:函数重载与引用

/定义引用,只需要在类型后面加&就行了int& b = a;//引用是可以多重引用的,c是b的别名,b是a的别名,那么c是a的别名int& c = b;return 0;诶,如果我定义一个新变量,给它赋值,不也能达成效果吗?但是这浪费了内存空间,说到内存空间,那我们来观察一下叭。可以看到,a、b、c三个变量的地址是相同的,更加说明了引用是不会开辟新的空间的。公式:类型& 引用变量名(对象名) = 引用实体;

2024-02-27 21:38:28 655

原创 C++入门:关键字、命名空间、C++输入输出和缺省参数

定义命名空间需要使用namespace关键字,然后打一个空格接命名空间的名称,再接一对花括号{},最后在花扩号里面填写命名空间的成员。//这是一个创建命名空间的实例代码int x = 10;int age;int x = 10;int age;一个项目内是可以定义同名的命名空间的,编译器在编译的阶段会将同名的命名空间合并(如果位置在头文件,你需要将头文件引入),但是并不建议在同名的命名空间中定义同名的变量,这会导致重定义的情况发生。

2024-02-27 16:54:48 1083 2

原创 C语言表达式求值

在平常的代码练习中,我们已经能对同类型的值进行加减乘除操作,可能也对某些不同类型的值有了一定的尝试。今天这篇文章将会讲解不同类型值运算时发生的变化。

2024-02-24 15:19:11 920

原创 C语言操作符详解(2)

2.结合性:如果两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了,则根据运算符 是左结合,还是右结合,决定执⾏顺序。⼤部分运算符是左结合(从左到右执⾏),少数运算符是右结合(从右到左执⾏),⽐如赋值运算符( = )。单⽬操作符的特点是只有⼀个操作数,在单⽬操作符中只有&(取地址)和*(解引用)没有介绍,这2个操作符,我们放在学习指针的时候学习。上⾯⽰例中, * 和 / 的优先级相同,它们都是左结合运算符,所以从左到右执⾏,先计算 5 * 6 , 再计算 6 / 2。

2023-12-22 22:26:42 370 1

原创 C语言操作符详解(1)

16进制的数字每⼀位是0~9,a ~f 的,把0~9,a ~f 的数字,各⾃写成2进制,最多有4个2进制位就⾜够了,⽐如 f 的⼆进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进制位会换算⼀个16进制位,剩余不够4个⼆进制位的直接换算。2进制和10进制是类似的,只不过2进制的每一位的权重,从右到左是:2的0次方,2的1次方,2的2次方……有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。

2023-12-21 16:06:45 855

原创 C语言函数递归

函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归 函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。上面是一段简单的递归代码,注意的是我们通常不会调用main函数,因为这会造成一定的麻烦,比如上面的代码,会造成栈溢出(Stack overflow),而且在某些环境下是不能调用main函数的,这个例子是在VS2022的环境下测试的。这样的思路就是把⼀个较⼤的问题,转换为⼀个与原问题相似,但规模较⼩的问题来求解的。

2023-12-20 19:05:57 978

原创 C语言static和extern

在本讲中,我们将会通过一些代码来认识static与extern两个C语言中的关键字。

2023-12-19 19:39:13 1050 1

原创 C语言函数(2)

接上文,我讲述了函数的概念、库函数、自定义函数以及形参和实参。在本篇中,我将介绍函数的return语句 、数组做函数参数 、嵌套调⽤和链式访问、函数的声明和定义。//判断⼀年是不是闰年return 1;if(r == 1)printf("闰年\n");elseprintf("⾮闰年\n");return 0;但是如果将函数的定义放在函数调用之后,VS2022会进行报错。//函数声明int main()

2023-12-18 20:34:59 829 1

原创 C语言函数(1)

库函数是由编译器厂商提供的一些代码,极大地便利了我们平时的使用。但是,作为程序猿,你所遇到的问题绝对不是能完全通过库函数就能解决的。这时,自定义函数就闪亮登场了。自定义函数能极大地展现一个程序猿的想象力,展示出一个程序猿的代码水平,体现一个程序猿解决问题的能力。

2023-11-15 20:57:33 34 1

原创 C语言数组

在本篇文章中,我将讲解数组的基本知识,并且会用一些例题来带大家实践一下。

2023-11-06 19:56:22 33

原创 基于随机数游戏的实现

在上一篇博客中,我们简单地介绍了C语言的分支与循环语句。今天我们来进行随机数游戏的进阶与提升。

2023-11-05 23:24:36 67 1

原创 C语言分支循环语句

以上就是今天所讲的内容——简单地介绍了条件分支与循环,如有不当之处,欢迎指正!

2023-10-29 23:00:14 55 1

原创 计算机小白~启动!

因为专业的问题,大一上阶段,每周除既定课程外,我会抽出至少15个小时来研究C语言,也有想法于蓝桥杯(因为对新人友好),当然我也了解到蓝桥杯需要一定的数据结构与算法的知识,所以在夯实好C语言的基础后,我会选择自学数据结构与算法,争取明年能打出一个好成绩,同时也为以后的学习开拓一条新路。由于没有基础,我会经常逛b站刷课程,运用一些网站资源练就本领,在苦思冥想而不得知的情况下找大佬寻求帮助。我最想去的公司是腾讯。腾讯作为一家名副其实的大厂,对技术的要求必然很高,路长道远,好好加油吧~

2023-10-17 09:41:22 46

空空如也

空空如也

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

TA关注的人

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