自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】二叉搜索树的底层以及实现

找N左子树的值最大结点R(最右结点)或者N右子树的值最小结点R(最左结点)来替代N,因为这两个结点中任意⼀个放到N的位置,都满足二叉搜索树的规则。2.树不空,按二叉搜索树性质,插入的值比当前结点大时往右走,插入值比当前结点小时往左左,直到找到空位置时,插入新结点。3.如果支持插入相等的值,插入值跟当前结点相等的值可以往右走,也可以往左走,直到找到空位置,插人新结点。(注:替代N的意思就是将N和R的两个结点的值交换,转变成删除R的结点)若它的右子树不为空,则右子树上所有结点的值都大于等于根结点的值。

2024-09-22 15:56:01 1780 85

原创 【C++】多态的认识和理解

多态是⼀种继承关系的下的类对象,去调用同一函数,从而产生了不同的行为。例如:Student继承了Person,Person对象买票为全价票,而Student对象买票则为优惠票。

2024-09-18 17:23:28 1793 108

原创 【C++】priority-queue的底层原理及实现

首先在进入优先级队列的学习之前,我们需要先对优先级队列有一定的了解。优先级队列是容器适配器中的一种,元素在队列中的顺序是按照它们的优先级来排列的,而不是按照它们被插入的队列的顺序。这其实就是数据结构中的堆,其底层都是以数组存储的完全二叉树,下面就来详细了解一下priority-queue是如何进行使用的。Priority Queue(优先级队列) 是一种特别的数据结构,它为队列中的每个元素都分配了一个优先级。在这个队列里,元素并非按照被插入的顺序来排列,而是依据它们的优先级来排序。

2024-09-10 13:29:46 1246 105

原创 【C++】list底层的模拟实现

list是一个双向链表的容器,它可以在其内部中存储各种类型的元素,并且支持动态地添加、删除和修改元素。

2024-09-05 16:09:41 1293 70

原创 【C++】有关vector迭代器失效问题

那么如果当前位置的元素刚好就是最后一个元素时,当对其进行删除时,返回的位置则指向end(),而end()的位置并没有元素,那么当对其进行解引用时也会导致程序崩溃,因此编译器认为这样的操作并不安全,于是认为当删除完元素时,迭代器就应该按失效的方式处理,不再对其进行使用。过程:it一开始指向初始空间的元素,而再次进行尾插操作时,由于空间不够需要扩容,因此需要释放旧空间开辟新空间,但此时的it还是指向已经被释放的旧空间,已经成为野指针了,因此再循环当中对野指针进行解引用是就会导致程序崩溃。

2024-08-30 18:19:19 1552 79

原创 我的CSDN-----第128天创作纪念日

起初的我,是为了在学习代码的过程中通过写博客的方式来巩固自己的知识。后来在遇到不会的问题时可以在csdn上面查找,寻求一点思路,将学到的知识通过博客的方式呈现出来。每当发布一篇博客后,就会收到很多人的评论加关注,随着粉丝的增加,自己也有了创作的动力,也在创作过程中结识了许多创作出优质文章的作者,一起不断进步。即使学业繁忙,我也会合理分配时间,尽自己的能力范围内,去创作出优质的文章。希望在往后的创作日子里,能够不断提高自己的能力水平,创作出优质更加的文章,去帮助更多的人解决问题,努力学习,共同进步!

2024-08-24 23:50:27 1007 74

原创 【C++】vector的模拟实现

reserve函数是完成对对象空间进行扩容操作的,当插入的数据大于对象的空间时,则会进行扩容操作,如果插入的数据小于对象空间时,则不会进行任何操作。这里需要注意的是:在代码最后三行我们可以看出,此时的_start是指向新空间的起始位置,_finish如果想调用size()时,而。size函数是用来返回数据vector对象中的有效数据个数,capacity函数则返回vector对象的容量空间的大小。vector的begin是返回容器的_start的位置,end则返回容器的_finish的位置。

2024-08-22 17:21:00 1675 86

原创 【C++】string类的模拟实现

+_size;// 大于2倍,需要多少给多少,小于2倍按2倍扩//插入字符//挪动数据--end;++_size;//插入字符串--end;i < len;else// 如果len大于剩余字符长度,更新lenstring sub;i < len;i++)

2024-08-18 11:26:59 1184 79

原创 【C++】模板初阶

模板可以分为两种,分别是函数模板和类模板。class data(类模板名)// 类内成员定义。

2024-07-28 16:49:40 1274 88

原创 【C++】类和对象(三)完结篇

通过上述代码及运行结果,我们可以看出:_a1的初始化是在_a2之后的,而_a2是以_a1的值来进行初始化的,而由于此时的_a1的值为随机值,因此_a2的值也为随机值。现代编译器会为了尽可能去提高程序的运行效率,在不影响正确性的情况下会尽可能减少⼀些传参和在传参过程中可以省略的拷贝操作。之前在实现构造函数时,初始化成员变量主要用于函数体内的赋值,而构造函数的初始化还有另一种方式,就是初始化列表。如上述代码及结果我们可以看出:由于匿名对象的生命周期只在当前这一行,因此在构造函数完后会自动的去调用析构函数。

2024-07-24 18:06:55 1343 89

原创 【C++】类和对象(二)

1.非const成员函数,即成员函数的this指针没有被const所修饰,当我们传入一个const修饰的对象时,被一个非const修饰的成员函数所接受,属于权限放大,因此函数调用失败。2.const成员函数,即成员函数的this指针被const所修饰,当我们传入一个非const修饰的对象时,被一个const修饰的成员函数所接受,属于权限缩小,函数调用成功。3.如果⼀个重载运算符函数是成员函数,则它的第⼀个运算对象默认传给隐式的this指针,因此运算符重载作为成员函数时,参数比运算符对象少⼀个。

2024-07-20 16:32:33 1367 88

原创 【C++】日期类的实现

在实现日期类之前,我们首先要知道实现哪些内容才会去编写代码。因此我们一般会采用声明和定义分离的方式来实现。将声明统一放入Date.h的文件中,成员函数的定义统一放入Date.cpp的文件中。class Date//友元函数声明public://定义在类里面的函数默认是inlinereturn 29;int _month;

2024-07-16 09:00:00 1357 91

原创 【C++】类和对象(一)

以class为定义类的关键字,Data为类的名字,{}中为类的主体。需要注意的是:类定义结束时后面的分号不能省略。类中的内容称为类的成员;类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。注:定义在类里面的成员函数默认为inline。我们可以用两种方式来定义类:class Datapublic:private:// 在这里是声明并不是定义,开辟空间才是定义int _year;int _month;int _day;//声明放入Date.h中。

2024-07-15 09:00:00 1952 52

原创 C++入门基础

C++起源于1979年,当时Bjarne Stroustrup博士在面对项目复杂软件开发任务时,特别是模拟和操作系统的开发工作中,他感受到了C语言的表达等方面的不足。于是在1983年,Bjarne Stroustrup博士在C语言的基础上添加了面向对象编程的特性,为后面的面向对象编程奠定了基础,为了区分C两者语言,于是命名为C++。因此,C++也可以进行C语言的功能。①定义命名空间时,需要使用namespace关键字,并在后面跟上命名空间的名字,然后接一对{},在{}中即为命名空间的成员。

2024-07-13 15:28:50 2008 76

原创 【C语言】【排序算法】----- 归并排序

为:O(N * log2N) 因为向下递归的时间复杂度为O(log2N),再遍历一次数组的时间复杂度为O(N)。归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法,即。先使每个子序列有序,再使子序列段间有序,最后合并成一个有序数组。为:O(N) 需要创建一个辅助数组tmp用来存归并后的序列。

2024-07-10 16:50:53 889 56

原创 【C语言】排序算法 -------- 计数排序

1i < n;i++)//时间复杂度:O(N+range)//只适合整数/适合范围集中//空间复杂度:O(range)i < n;max = a[i];return;// 统计次数i < n;i++)// 排序int j = 0;i < range;return 0;

2024-06-17 22:27:50 1199 40

原创 【常见的六大排序算法】插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

在实现排序前,我们要先知道什么是排序。排序:简单的来说就是把一串数据按照一定的方式依次排序。例如:可以按照数字的大小升序或降序排列,或者按照英文字母的先后顺序排列等。使用这一系列的方式,就可以将一串无序状态下的数据排列成有序的数据。

2024-06-01 18:20:50 2425 98

原创 【C语言】二叉树的实现

在学习二叉树实现时,我们首先要对二叉树基本认识有一定的了解,下面我总结了以下几点有关二叉树的性质以及特点:🎈每一个节点最多有两棵子树,不存在度大于2的节点。🎈左右子树是有顺序的,其次序不能颠倒。🎈二叉树一般有四种形态,分别为:空二叉树,只有一个根节点,根结点只有左子树和根节点只有右子树。🎈二叉树常用的三种性质:1)二叉树的第 i 层上最多有2 ^ (i - 1)个节点;2)深度为K的二叉树最多有2 ^ (k - 1)个节点。3)度为0的节点个数比度为2的节点个数多一个。

2024-05-26 20:13:03 1527 96

原创 Python ------ 实现学生管理器

定义一个主函数main,在通过定义一个menu函数对学生管理系统的菜单进行打印。# 定义menu()函数print('1. 新增学生')print('2. 显示学生')print('3. 查找学生')print('4. 删除学生')print('0. 退出程序')# 定义主函数print(' 欢迎来到学生管理系统 ')menu()main()

2024-05-17 23:39:27 3509 113

原创 二叉树的基本概念

的。任何一棵树都包含[根 + N棵子树]所构成。

2024-05-13 22:44:01 1553 76

原创 C语言 [力扣]详解环形链表和环形链表II

各位友友们,好久不见呀!又到了我们相遇的时候,每次相遇都是一种缘分。但我更加希望我的文章可以帮助到大家。下面就来具体看看今天所要讲的题目。

2024-05-10 23:55:45 1338 58

原创 C语言-------实现贪吃蛇小游戏

Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。​。

2024-04-28 18:48:18 2009 50

原创 Python-------实现人生重开模拟器

写到这里,相信大家对这款小游戏制作有提升了不少的认识。虽然我们这这里只写了一个幼年阶段,但我相信,只要你们看完这篇文章,一定会有能力继续去实现其余的人生阶段,令游戏变得更加完善。See You ~

2024-04-27 01:53:45 1665 26

原创 顺序表基本操作

原因就是当i等于ps->size-1时,arr[size-1]=arr[size],而size没有数据,从而导致越界。在使用顺序表的过程中,我们难免会遇到空间不够的情况,这时就需要realloc函数对空间进行扩容处理。这里需要注意的是顺序表不能为空,如果顺序表为空,执行size–时会导致arr[size-1]=-1,数组下标不可能为负数。因为内存是动态开辟而来的,所以当我们不需要使用时,切记要将内存返回给操作系统,否则会出现内存泄漏的风险。(2)动态顺序表-------动态开辟空间。

2024-04-18 21:36:09 1115 25

空空如也

空空如也

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

TA关注的人

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