自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux下的编辑器——Vim

1、Vim的基本概念vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x windowmac os、 windows。1、Vim的基本概念Vim有很多模式,但是主要的就只有这三种:命令模式,插入模式,底行模式。1)、命令模式控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入下,或者到2)、插入模式只有在插入。

2024-03-13 19:12:11 1687 6

原创 搜索二叉树

如上图所示就是一棵二叉搜索树,很显然,它是一棵特殊的二叉树。我们不难发现,当二叉搜索树用中序遍历的时候,它是从小到大依次排序的,例如,我们中序遍历上图这棵树的结果是:1,3,4,6,7,8,10,13,14。所以说,这个结构的效率还是很高的,况且,遍历一遍自动排序,也是很方便的。

2024-03-02 11:14:26 1106 20

原创 Linux环境下基本指令

今天我们一起来认识一下Linux环境下一些基本的指令,这些指令是我们学习Linux的基础,只有掌握了这些指令,我们才能在Linux环境下进一步学习知识,话不多说,我们开始(以下演示操作是在云服务器的环境下(CentOS7))

2024-02-25 13:06:26 1057 10

原创 二叉树前序中序后序遍历(非递归)

我们先让左路节点入栈,因为是前序遍历,所以我们入栈的同时,遍历当前结点的val,当左路结点都入栈完,那么当前节点一定是没有左子树的,我们让这个结点出栈,这个时候我们处理当前结点的右子树,右子树同样进行先让左路节点入栈.....循环做此操作,直到右子树也会空,然后将这个结点的所有左右子树我们都访问完成,我们已经pop掉这个时候,只需要处理新的栈顶元素就可以啦。今天我们一起去看一下二叉树的前序中序后序的遍历,相信这个对大家来说是信手拈来,但是,今天我们并不是使用常见的递归方式来解题,我们采用迭代方式解答。

2024-02-17 18:06:07 1314 16

原创 力扣236——二叉树的最近公共祖先

祝大家新年快乐呀,虽这段时间正值过年,但是我们不要忘记停下学习的脚步。今天我们一起看一到力扣上的经典二叉树OJ题,求二叉树两个结点最近的公共祖先。链接给大家放在这里啦,大家一点即达首先我们看到题目,这道题并没有告诉我们这是一棵怎么样的二叉树,不是完全二叉,也不是搜索二叉,所以这道题做起来就比较棘手,完全二叉树的话我们可以根据结点的编号查找,搜索二叉我们也可以按照大小确定范围,但是眼前这颗数完全是一个乱序的,所以这道题怎么下手呢?

2024-02-11 19:27:43 1023 14

原创 C++多态

我们在日常去景点、坐火车等地方,都需要买票,而对成年人是要求购买全价票。对学生而言需要购买半价票。这个场景是怎么样实现的呢?怎么同样是一个人,如何能清晰的区分该购买哪一种价格的票呢?C++中,我们引入多态这个概念,通俗的讲,多态就是多种形态;当去完成某个行为的时候,不同的对象完成会产生不同的结果。所以,对于买票而言,我们成年人去买,后台会让给我们购买全票,学生去买,只会买半价票。

2024-02-04 13:41:29 1060 19

原创 C++继承

这只是两个类,如果后面再引入校长、班长、教导主任等等,那我们重合的地方会很多很多。C++这门语言,非常忌讳重复的代码,所以这个时候,我们引入继承这个概念。我们可以封装一个类Person,student和teacher归根结底也是一个人,我们在Person类里面把他们共有的成员放进去——name,age;然后我们在定义student和teacher类时,直接继承Person类的成员,再在student,teacher类里面,定义自己特有的成员就可以了。

2024-01-31 15:21:30 1053 15

原创 STL---stack&&queue

queue文档介绍1.队列是一种容器适配器,专门用于在FIFO上下文先进先出中操作,其中从容器一端插入元素,另一端提取元素。2.队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。3.底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用。

2024-01-26 18:03:00 1121 27

原创 STL——list

带头结点的双向循环链表 ,list这个容器常用于适合大量插入删除数据的场景,由于它是一个个结点链接,所以它移动节点会很方便,并不需要挪动数据,头插头删,或者任意位置插入删除都很高效。但是它的缺点也很明显:不支持随机访问,访问某个元素效率O(N),底层节点动态开辟,小节点容易造成内存碎片,空间利用率低,缓存利用率低。大家使用的时候注意能否适合使用List。

2024-01-20 20:34:45 2568 31

原创 我的创作纪念日

不知不觉已经写博客4个月了,时光荏苒,如白驹过隙,转眼间已经发布20多篇作品,还记得刚开始写博客时,不知道该写一些什么内容,发布的作品也几乎没有什么人看,但是我没有放弃,继续往下写,因为我始终认为,写的博客首先是写给自己的,其次才是分享给别人。对我来说,现在已经不关乎作品的浏览量是多少,而是一篇博客的质量怎么样,一篇质量高的博客,才能体现出自己的水平深度,能把一个难的问题给阅读者讲解清楚,才能体现出自己的水平!这篇文章是我在写博客时候,有些知识点遗忘,又返回去复习,边学习,边写文章的一篇作品。

2024-01-18 11:45:10 531 13

原创 string 类

string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信息,请参阅basic_string)。

2024-01-14 15:50:16 1303 31

原创 C++类和对象

C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。只不过在C++中,更喜欢用class 替换struct。class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。

2024-01-07 18:55:17 1382 34

原创 数据结构——堆排序

堆排序就是利用堆(假设利用大堆)进行排序的算法。他的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将他移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次大值。如此反复执行,便能得到一个有序序列了。

2024-01-06 22:28:24 1387 6

原创 排序算法——快排

快速排序(Quick Sort)的基本算法思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序的目的。

2023-12-20 22:46:37 2358 16

原创 插入排序----希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个gap组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。

2023-12-17 13:49:22 4591 16

原创 插入排序(直接插入排序)

这个时候我们只需要把tmp赋给end+1位置就好了,但是我们可以不在这个添加这个语句,我们直接用break跳出else,我们在等tmp一遍遍走完if条件,最后一次走玩else的时候在最后添加这个语句,当a[end]>tmp一次次让end--,指定end=0的时候a[end]还是大于tmp,end--=-1,那就证明tmp是最小的,那就可以在while循环后面加a[end+1]=tmp。肯定就是从end+1位置挪动到0位置,一共需要插入n-1个数,所以直接插入排序的时间复杂度是O(N^2)。

2023-12-17 13:33:07 147 3

原创 二叉树OJ题之三

哈喽伙伴们,有一段时间没更新博客了,主要是这段时间要准备学校的期末考试,所以没有把部分时间分给博客,今天我们一起去接着看二叉树递归有关的OJ题,今天我们要学习的是 判断相同的树,力扣题目--100 ,直达链接。我们先看这道题的题目要求,给我们两棵树的根节点p,q,让我们判断两棵树是否相同,无非就是判断两棵树相应的根节点是否相等,那我们就可以开始入手做题。首先我们要先判断两棵树同时为空的情况,那就返回true即。树为空的情况判断了,代码继续往下走就是不是空树,那就直接判断p和q的val是否相等,即。

2023-12-06 16:37:15 938 9

原创 二叉树OJ题之二

有人会疑问为什么这里的连接符号用||,注意,程序走到这里的前提是这棵树的左右子树不为空,即左右子树两边不会同时为空,所以用||符号如果leftroot==NULL就不会走后面rightroot==NULL,如果leftroot!我们首先先来分析这道题,要判断这道题是否对称,我们首先需要判断的是这颗树根节点的左右子树是否对称,所以我们比较对象是根节点的左右子树,那我们不妨自己写一个函数my_isSymmetric,参数就是。左右子树都为空的情况判断了,现在判断有一边为空的情况呢?左右子树都是空树呢?

2023-11-29 16:19:37 1053 8

原创 二叉树OJ题讲解之一

所谓单值二叉树就是这棵二叉树的所有节点的值是相同的,那我们要做这道题,肯定要把这棵树的所有结点遍历一遍,看看所有结点的值是否相等。如果左子树不为空,在这个前提下要是左子树的值等于根节点的值我们返回true,但是我们这样写还是到后面会麻烦,因为只要左子树的值等于根节点的值就true的话,那左子树的左子树呢?空树、左右子树都不为空的情况我们都判断了,那走到这里,就是根节点的左右子树都等于根节点的值,那我们就继续以根节点的左子树为根,根节点的右子树为根判断了,并且这两个必须同时满足那才能返回true,即。

2023-11-28 11:17:29 408 22

原创 力扣OJ题讲解——循环队列

我们需要设置队列长度K,队首元素,队尾元素,插入元素,删除元素,判断空,判断满。要确定这个循环队列为空,那就需要保证,头元素的下标和尾元素的下标相等才可以,假设我们设头元素下标为front,back为尾元素下一个位置,因为我们要区分back=0时,到底是有一个元素还是没有元素的情况。我们不妨设置队列长度K的时候多开一个空间,即k+1,我们保证k+1个空间最多只使用k个,留出一个位置,让back+1=front时为满队列。下来我们先把容易实现的接口先完成,先把什么时候为空,什么时候为满实现。

2023-11-22 09:33:00 1024 22

原创 栈 和 队列

栈是一种特殊的线性表,只能在一端进行插入或者删除。表中允许进行插入或者删除的一端成为栈顶,表的另一端叫做栈底。当栈中没有元素时称为空栈,栈的插入操作称为入栈,栈的删除操作称为出栈。栈主要的特点就是。即就是后进栈的元素先出栈,每次进栈的数据元素都放在原来栈顶元素之前成为新的栈顶元素,每次出栈的元素都是当前栈顶的元素。

2023-11-20 09:16:01 334 20

原创 顺序表和链表

线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2023-11-15 09:21:22 351 23

原创 链表经典面试题之二

当然不存在,如果环存在的话,就没有尾结点,都已经叫尾结点了那肯定就是最后一个结点。我们想一下当时fast一次走两步,fast=fast->next->next,我们只判断了当fast==NULL的时候循环停止,是不是忽略掉fast->next的时候到空了呢?我们定义fast一次走两步,slow一次走一步,如果有环fast肯定先进环一直在换里面转,当slow进环的时候两个指针距离相差为N,而fast和slow每走一步,距离就减少1,总会存在,距离为0的情况,当fast=slow的时候,存在环,否则不存在;

2023-11-11 22:51:43 922 13

原创 链表经典面试题之一讲

如上图,要将链表反转,我们可以把1指向2,改成2指向,依次改指向,就可以把链表倒置,我们如果将原本的结点1指向2,改成节点指向1,那就原本2指向的结点3就找不到了,所以,我们要提前保存要改变指向的节点的下一个结点防止改变指向后丢失后面的结点。,所以我们要在n3=n3->next的前面判断一下,当n3为NULL时就停止,即代码为。让n3保存n2的下一个结点,n2的下一个结点为n1,然后把n2赋给n1,把n3赋给n2,即。,我们定义n3的时候定义的是n2->next,有没有一种可能这是一个空链表呢?

2023-11-07 23:27:40 387 8

原创 顺序表(数据结构)

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

2023-11-04 22:55:12 486 2

原创 指针相关面试题目

这里的a代表首元素地址,给其强制类型转化成int 再+1,即只跳过了int类型中的1个字节,整型在内存中是小端存储,即1,2,3,4原本在内存中应该是以0x00000001,0x00000002,0x00000003,0x00000004的形式存储,它们以小端存储即。,他们中间是用“ ,”隔开,不是“ {}”,所以,他只初始化了3个元素,即1,3,5,剩下的全是0,即这个二维数组应该是。这里的 &a表示取出整个数组的地址,ptr1指向1的地址,+1跳过整个数组即指向4后面的地址,即。

2023-10-25 20:54:00 930 8

原创 矩阵的运算

目标:实现一个能进行稀疏矩阵基本运算(包括加、减、乘)的运算器。(1)以三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减、相乘的运算(2)稀疏矩阵的输入形式为三元组表示,运算结果则以通常的阵列形式列出。(3)首先提示用户输入矩阵的行数和列数,并判别给出的两个矩阵行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20。(4)程序需给出菜单项,用户按照菜单提示进行相应的操作。

2023-10-24 17:55:49 437 1

原创 操作系统——银行家算法(c++实现)

编写银行家算法程序,能够对进程提出的资源请求进行判断,并打印出计算得到的安全序列。目的:利用银行家算法实现系统资源的动态分配及进程安全状态检测问题。

2023-10-23 20:15:14 691 2

原创 学生成绩管理系统(C++实现)

其中Info类定义学生的基本信息:学号(id),姓名(name),性别(gender),年龄(age),班级(ClassName),course类定义学生的课程分数:专业课(zhuanye),英语课(englishscore),程序设计(programingscore),高等数学课程(mathscore)。基于本程序的数据保存的结构是以容器(vector)实现的,因此上,在算法实现上都是以容器(vector)的方式进行实现的,程序模块分为三大模块:类设计模块,用户界面交互模块,函数设计模块。

2023-10-22 16:08:16 1782 35

原创 模拟实现扫雷游戏

实现扫雷游戏

2023-10-21 19:01:16 132 3

原创 通讯录(C语言实现)

实现一个通讯录:1.可以保存100个人的信息(名字、年龄、性别、电话、住址)2.增加人的信息3.删除指定联系人的信息4.查找指定联系人的信息5.修改指定联系人的信息6.排序通讯录的信息7.显示所有联系人的信息

2023-10-20 14:13:48 652 10

原创 文件操作(文件读写)

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的,取名FILE。文件的顺序读写。文件缓冲区

2023-10-19 23:15:47 272 15

原创 动态申请内存

我们最常用到开辟内存的方式有两种,一是定义一个变量,在栈空间上开辟字节,例如:int a=20;有的时候我们并不需要这么大的空间,这样就会造成浪费,而且有的时候我们需要的空间大小不够用,那就需要重新再定义一个更大的变量或者数组,再把之前的内容拷贝到新的空间上去,很麻烦。有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的时。所以如果我们对申请的内存空间的内容要求初始化,那么可以很方便的使用。候内存,我们一定会对内存的大小做灵活的调整。的空间,并返回指向这块空间的指针。

2023-10-15 16:17:22 255 14

原创 字符函数和内存函数

(1)字符串把‘\0’作为结束标志,strlen函数返回的是在字符串中‘\0’前面出现的字符个数(不包括‘\0’)。中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。4、strcmp(比较两个字符串的大小,按照字符的ASCII值比较)(2)目标空间必须有足够的大,能容纳下源字符串的内容。(3)注意函数的返回值为size_t,是无符号的。(1)第一个字符串大于第二个字符串,则返回大于。(3)第一个字符串小于第二个字符串,则返回小于。(2)第一个字符串等于第二个字符串,则返回。

2023-10-10 20:33:56 160 13

原创 三子棋游戏

模拟三子棋游戏其实就是在一个九宫格,玩家输入一个符号,电脑自动输入一个符号,来来往往,直至有人赢或者九个格子占满就结束。

2023-09-25 15:53:40 187 10

原创 关于指针,常见表达形式的理解

指针常见几种类型

2023-09-18 00:02:08 214 11

原创 初遇CSDN

希望可以通过发布博客得到大家回应来激励自己学习,编程语言知识点很多,内容很杂乱,对于初学者来说,一段时间不去复习、学习就会遗忘,我希望可以利用博客来监督我每天学习。首先是想记录我学习编程的整个过程,其次也想在博客里多多看看大佬们的文章,学习大佬对知识点的把控,一些不理解的内容可以在这上面得到解决。同时我也会把我学习中的一些理解在这上面分享出来,希望能给到大家一些帮助。各位码友大家好,这是我写的第一篇博客,以后我会在此分享一些我在学习编程的时候的心得和困难,希望可以帮助到你们和得到其他大佬帮助。

2023-09-10 18:07:19 184 3

空空如也

空空如也

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

TA关注的人

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