自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 继承1 2024_9_18

当需要继承的时候,我们就在派生类的后面加上一个权限+父类,这个权限可以是公有,保护和私有,后面就是继承的父类.此时,下面的stu这个派生类,也就可以使用Person里面的方法了.

2024-09-18 17:21:31 339

原创 stack,queue的模拟实现,deque的模拟实现和小知识点的杂糅

由于之前更新了一期链表的模拟实现,其实链表,stack,和queue的模拟实现的方式都差不多.但这次,有一个新的玩法.那就是不用自己写,直接去用别人现成的接口就行.怎么得出这个结论 的?首先我们可以看到,stack和queue大同小异,而且很多的操作和vector有着非常多的相似之处.因此,我们可以尝试使用vector来实现stack和queue代码非常简短,就直接上代码了.在这里我的思路就是定义一个模板类,然后第一个传的是参数类型,第二个传的则是类,什么类?

2024-09-09 11:03:07 721

原创 链表的实现(C++版)

对于链表的学习,之前在C语言部分的时候就已经有学习过,也学会了使用C语言来打造一个链表.如今学了C++ 则想通过C++来打造一个链表,以达到锻炼自己的目的.

2024-07-31 15:23:09 1105

原创 vector 介绍

首先我们要大致弄明白vector是一个什么东西,其实vector就是之前我们学过的顺序表,这里直接使用就行了.定义vector-------->vector<typename> arr此时的这种定义vector可以理解成为一个数组,而typename可以是各种数据类型,比如string,int,double......等等此时的vector就是一个int类型的顺序表.

2024-07-13 19:53:38 842

原创 string的模拟实现

因为strlen是碰到'\0'就会停下遍历,进行返回,

2024-05-14 13:46:40 974

原创 有关string的部分接口

迭代器是可以用来访问string里面的内容的,这里来记录一下使用的方法。里面用到了一个叫做begin函数和一个end函数,这两个都是针对string使用的函数。s1.begin()函数是指向string内容的第一个元素而s1.end()指向的则是最后一个元素的下一位上面就是迭代器了,那什么是反向迭代器?顾名思义,反向迭代器就是反方向来进行访问和迭代的方向与迭代器是相反的。分别有rbegin()和rend()。

2024-05-07 09:05:03 703

原创 Linux的有关权限的学习

在Linux中,一切皆文件,而每个文件都会有其相对应的操作权限。那么,我们该怎么来认识他们呢?首先我们可以看到,在每个test文件的前面都会有一个-rw-r--r--这个字符,而这个字符,就是表示这文件的权限。那他是怎么表示的呢?从第一个-(这个-代表普通文件)算起,他后面的9个字符可以按三三分开,分别是r w -r - -r - -。他们代表着什么意思呢?r:表示"可读"w:表示"可写"x:表示"可执行"可是这上面也没有"x"这个字符的出现呀。这就得继续研究下去了。

2024-05-03 22:58:48 643 1

原创 日期类的模拟实现

有关类的定义,首先是需要声明共有类和私有类的成员函数和成员变量。这里我分了三个文件写,分别有Date.h,Date.cpp,test.cppclass Dateprivate:int _year;int _month;int _day;public:在代码中,声明了一个Date的构造函数,但是我把Date的定义放到了Date.cpp里面,也就是说,这里的声明和定义分离了。为什么要这样搞?这是由于如果不进行声明与定义的分离的话,当。

2024-05-02 22:23:12 674 1

原创 有关构造函数和拷贝构造函数等细节的梳理

构造函数在类中的作用就是承担了一个初始化的作用,相对应的,他会有一个析构函数,析构函数的作用就是对各种程序结束时候的一个收尾处理,比如空间栈的回收,释放节点等等。但他们这两个函数在程序中都是会自动调用的,即使是我们不写,他们也会自动生成一个默认的构造函数来对自定义类型进行初始化。这里来说一下什么是自定义类型,与自定义类型相对的还有一种是内置类型,通俗来说,内置类型就是编译器的亲儿子,比如 int,double,等等都是内置类型。而我们自己定义的一个类,比如class Date{},就是自定义类型。

2024-04-24 18:35:48 725

原创 在内存中各个区域的数据存储

全局变量的生命周期从程序开始到程序结束,静态局部变量则是从他们被定义开始到程序结束。动态分配内存的区域。比如使用malloc,calloc。存储局部变量,函数参数,返回地址,形参变量。储局部变量和静态局部变量。

2024-04-16 16:08:00 134 3

原创 部分C++概念和关键字,类和对象

在之前写一些数据结构的时候,我们总会开三个文件,.h,.c,和.c。.h是包含头文件和函数的声明,一个.c文件是来写函数的实现过程的,最后一个.c文件是用来测试的。那为什么要这样干,我以前都没有进行过一个深入的思考。上面的代码我们可以看到,并不能正常的运行,并且编译器报出了一个链接错误,而且说我们有一个重定义的符号,这是为什么?首先我们来看一下他们生成可执行文件的一个过程。

2024-04-16 09:20:42 580 1

原创 两种快排类型

霍尔是快排算法的创始人,也就是最原始的快排。这个快排的总体思想则是首先定义一个key值,以这个值为基准,然后把待排序的数组分成左右两个区间。定义一个指针begin指向数组的左边,然后定义一个指针end指向数组的右边,如果要排升序,则begin寻找的是比key指向的元素大的值,而end则寻找的是比key指向的元素小的值,简称左边找小,右边找大。当找到小和大的时候,就会跳出循环,这两个值将进行交换。

2024-04-04 22:27:02 932 1

原创 简述排序归类

希尔排序的思想则是首先对数组进行预排序,而预排序的目的则是首先让数组变成一个即将有序的状态,然后再通过插入排序,把他们排序好。但是从另一个角度来说,希尔排序又像是一种不断通过调整数组元素之间来比较的间隔,然后通过缩小间隔的一种插入排序。也就是说,一开始首先设定间距gap为3,然后通过比较数组下标n+gap的元素来进行交换这样走完一趟就刚好把数组中较为小的放到了前面,较大的放到了后面,而此时的gap为3,要想进一步进行排序,那就得缩小gap,直到间距为1,则数组刚好完成排序。

2024-03-31 16:14:28 937 2

原创 实现小堆.

在认识堆之前,我们首先得认识一个叫做"二叉树"的概念。二叉树是数据结构的一种,他是由父节点和子节点组成。二叉树又分为完全二叉树和不完全二叉树。何为完全二叉树?完全二叉树就是从上往下,从左往右的节点排序,不能出现一个空的地方,就像这样而非完全二叉树,则长这样而这种则称为满二叉树。

2024-01-17 17:50:47 948 3

原创 简单实现栈

与顺序表一样,栈的定义是首先用数组来组成,因此结构体里会有一个数组的首元素,空间和栈顶。int top;}ST;

2024-01-15 18:37:22 387 1

原创 关于Linux的部分基本指令

如果是搭配..来使用(cd ..),则是退回到上一个路径如果是cd .则是显示当前路径mkdir:在当前路径创建一个"文件夹"这里无法创建成功的原因是已经原本有了一个名为"111"的文件夹。

2024-01-13 21:36:55 913 1

原创 简单手撕双向循环带头链表

双向带头循环链表是数据结构里众多链表中的一种,这种类型的链表是一种非常常用的链表。他的整体结构是首先在最开始是有一个哨兵位来当作一个头节点,这个头节点是不需要存放数据的(当然想存放数据也是可以的)。在我们使用这种类型的链表的时候,由于有这个哨兵位头节点的存在,因此我们就不需要来考虑链表是否为空的问题,在使用的过程中更加方便;其次,对于这种链表,他每一个节点都是有一个前驱指针和后继指针,这里我就把前驱指针叫做prve,后继指针叫做next。

2023-12-03 22:05:00 819 3

原创 关于链表中传二级指针的深入探讨

如果if指向空,那么就将*phead指针指向新开的节点node,在下面的输出中,由于->的优先级比*大,因此要先把前面的括起来,进行解引用后取结构体里面的值。此时此刻,&sl代表的就不是结构体的地址了,而是代表指向结构体指针的地址,因此在PushBack那里,如果想改变*sl,就要使用**二级指针来接收*sl。由于要传一级指针,因此在主函数中的SL sl只能是定义成一个结构体,并不能定义成一个结构体指针,然后在往PushBack里传一个地址,然后在实现PushBack的那边使用一级指针来接收。

2023-11-20 00:56:04 67 3

原创 简单实现单链表

在实现这个方法之前,我们首先来探讨一下,这个"指定位置"指的是什么意思,是一个节点?还是第几个节点?如果是前者,那么就是一个结构体指针变量;如果是后者,则是一个整型变量。实际上,上面的两种说法都可以是"指定位置"。但为了程序的效率以及可读性,在这里,就使用前者这个概念。如果采用了前者这个方案,那么首先就要在链表中找到这个节点,就需要定义一个专门来寻找这个节点的函数,其返回值就是结构体指针,也就是返回一个节点。那怎么实现呢?首先我们可以把想要查找的值给传进去,注意,是值,而不是节点。

2023-11-10 22:17:23 99 8

原创 消失的数字和轮转数组

关于这个思想,说实话,我觉得也是挺复杂的。这就有点像我之前写过的单身狗2,这道题的要求就是在一个数组里面找出只出现过一次的数字,大概的思路也是用0跟数组里面的数字进行异或运算的操作,相同的数字就会消失,最后只剩下两个数字,再用位运算的方法把这两个数字分别输出。异或的操作运算是碰到相同的数字就为0。于是我总结了一个规律,在用x = 0与数组的内容进行异或操作的时候,可以把x理解为一个袋子,把数组里面的数字一个一个地往袋子里面装,如果袋子里面装了两个相同的数字,则这两个数字就会被"湮灭"掉,消失不见。

2023-11-06 13:00:11 64 1

原创 简单实现顺序表

首先,我们先来了解一下顺序表的概念。顺序表是数据结构中的一种,他的底层逻辑非常简单,就是数组,是基于数组来存储东西的。他主要的功能可以分为,头插,尾插,头删,尾删,任意插入数据,任意删除数据等等,当然还有一个最基本的功能,就是打印数据啦~。顺序表可以用来当作通讯录,一些信息管理系统等等的底层代码。在我们将要实现这些东西的时候,我们就可以直接来调用这个顺序表。

2023-10-24 22:06:32 149 13

原创 结构体在内存中的存储

这就涉及到对齐的最后一步:总内存是结构体变量里面的最大对齐数的整数倍数,在结构体里面,最大的对齐数是int类型的4个字节,整数倍是8,因此最后的输出结果是8个字节~就拿你将要对比的数据类型所在内存中占的字节数来对比,比如我要对比int类型的数据,他在内存中所占据的字节数为4,那么就拿他跟默认对齐数8来对比,它如果比默认对齐数小,那就对齐4个字节,如果相等或是大于默认对齐数,则是8个字节。——————————————————分割线——————————————————————什么是结构体内存对齐呢?

2023-09-30 11:28:13 254 1

原创 整数和浮点数在内存中存储

存储的大概方式我们知道了,那存储规则呢?以32位的浮点数为例,首先把S存放到第一个比特位,如果是正数就存0,负数就存1;接着把E+127所得到的数字转换成二进制位存入11个比特位中;最后把M存进去,但一般来说,M都是写成1.xxxxxxx的形式的,因此在存储这个数据的时候,我们可以把1给省略掉,只存放小数点后面的数字,如果存完了小数点后的数字还剩余比特位没存的话,就存0上去就可以了。

2023-09-25 18:28:12 90 2

原创 memmove函数的模拟实现和数据在内存中的存储

分析了这么多,代码的实现也可以分两种情况讨论。

2023-09-21 21:51:48 207 1

原创 2023-8-15 单身狗2

因为从位运算的角度来说,当进行异或运算的时候,之有在”1“的位上,才能找到那两个只出现过一次的元素的不同点,用这个点来把这两个元素分开,如果说这两个数字的二进制位都是一样的话,那就没办法把这两个元素给分开了。我们可以考虑把最后一位都是"1"和最后一位都是"0"的元素分别放在一个数组里面,然后再各自进行异或运算,这样,相同的元素就会消失,只剩下最后的两个只出现过一次的数据。首先让数组里面的所有元素都进行一次异或运算,最后得到的一定是两个只出现过一次的元素所进行异或运算的值。^的运算规则是相同为0,相异为1。

2023-08-15 21:22:21 99

原创 2023-8-13杨辉三角

通过分析我们可以看到,以第三行为例,第三行的中间就是上一行的第一个元素和第二个元素之和。若设第三行中间的元素为arr[i][j],那么他上面的元素则为arr[i-1][j],左上的元素为arr[i-1][j-1]。首先来分析这个三角形,每一行的第一个和最后一个元素都是1,因此我们首先可以使用二维数组来试着打印每一行的第一个元素和最后一个元素的1。由此我们可以得到,arr[i][j]=arr[i-1][j]+arr[i-1][j-1]。直接代入代码就可以了~,因此在二维数组里面可以写成arr[i][0]

2023-08-13 22:05:28 86 1

空空如也

空空如也

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

TA关注的人

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