自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++入门超详细解释

凡是临时变量都具有常量性传值返回会多一个临时空间,这个临时空间是对值的拷贝而引用返回,直接传回来的空间就是那个值自己的空间用引用返回值的时候,要看看这个返回值的生命周期,如果只是在他自己的函数内部有效,就不安全了,因为这块空间可能被使用,或者被覆盖。如果返回值是一个全局变量,可以考虑用引用返回。

2024-06-22 01:42:17 1036

原创 Linux基础篇

与Linux相关的岗位运维工程师相关的:系统运维,应用运维,DBA开发工程师相关的:内核/驱动开发,软件开发,嵌入式开发架构师Web应用数据库大数据云计算物联网高级程序员必备技能入门篇1-2Linux概述Linux安装基础篇3-6文件与目录结构VI/VIM编辑器网络配置系统管理远程登陆实操篇7 (实战性很强,有大量常用命令玩转Linux)文件目录类时间日期类用户管理类文件权限类磁盘分区类进程线程类扩展篇8-9软件包管理克隆虚拟机。

2024-06-20 17:59:00 1003

原创 一篇文章了解常用排序算法

排序文章目录排序直接(插入)排序InsertSort思想实现方法:希尔排序ShellSort(可过OJ)思想预排序gap的作用整体代码选择排序SelectSort思想完整代码堆排序HeapSort(可过OJ)思想大根堆向下调整完整代码冒泡排序BubbleSort快速排序(快排)QuickSort缺陷三数取中法,规避缺陷情况快排的实现方式双(左右)指针法挖坑法前后指针法快排的非递归方式归并排序(外排序)MergeSort (像后序遍历)(可过OJ)归并排序的内存中(内排序)实现方法归并排序内排序的非递归归并

2024-06-18 16:17:50 839

原创 一篇文章搞懂二叉树

拿中序来说,拿到这棵树,第一个节点也就是根,但是不会访问他的值,因为中序访问就是先访问左子树,对于A这棵树而言,左子树是以B为根的子树,但是这时候不能访问B的值,因为对于B而言,D才是B的左子树,对于D而言,左子树为空,返回NULL(这也就是中序第一个NULL的来源)。什么意思呢,就是如果这个节点有子节点,也就是该节点的孩子,就让这个节点的左孩子指针保存孩子的地址,如果该节点没用孩子,就指向空,如果该节点的父节点除了该节点还有其他的子节点,就让该节点的右兄弟指向兄弟节点。比如,5个节点的树,一定有4条边。

2024-05-29 22:11:54 1369

原创 中等题 数组中的第K个最大元素(堆排序)

为什么是小根堆呢,因为堆里面最小的元素一直在堆顶,如果后进的元素比堆顶大,说明这个后进的元素一定是前k里面的数。建立小根堆,最小的一直在堆顶。第三个循环是将剩余的nums的数与堆顶比较,如果比堆顶大,就替换堆顶。题中让找第k大的数,也就是从最大的数开始往后数,第k个数。万一堆顶一上来就是最大的数,那么所有的数都无法进堆了。如果建立大根堆,堆顶一直是堆里面最大的数,那么是比堆顶大的进?我们先建立这个堆,第一个循环就是把nums里面的前k个数,拷贝到堆里面。请注意,你需要找的是数组排序后的第。

2024-05-24 11:10:17 163

原创 一篇文章搞懂数据结构中的栈和队列

写在前面的一些话,发现数据结构还是学了c++之后再学比较简单一些,说的是学习难度低了点,不过有可能对c++库函数的底层逻辑掌握不清楚,但是对于做题而言,知道原理之后能做题就够了。当然用c语言手搓这些库也不是没有好处,就是提升了代码编写的能力。

2024-05-18 16:33:22 713

原创 中等题 设计循环队列

我一直想的是,假如有3个数据吧,我们放了123进去,这时front是0,tail是3,我们访问的时候只访问数组偏移量为2的地方就好了,但是人家网站不允许这种方式,哪怕tail只是指向了数组后面的空间,不使用也不行。还有一个能讲的接口是dequeue,这个接口是唯一一个可以删除元素的节点,当然删除元素的方式有很多种,有释放空间,还有越过的方式,这里的数组早晚都可以free,所以我们直接越过数据就好了,在上面的接口是tail可能越界,这里是front可能越界,处理方式和上面的一样,一旦front越界就拉回0。

2024-05-17 01:30:53 1336

原创 简单题 用栈实现对列

题面:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty100pushpoppeekemptypoppeek。

2024-05-16 17:08:04 794

原创 简单题 用队列实现栈

有了pop指令之后,重新去调接口,当对列1的元素不为空,会进入while循环,当对列1的元素数量大于1个的时候,会一直进行以下操作:访问对列1的对头元素,入对列2,删除队列1头节点。当对列1剩一个元素的时候,让ret保存一下对头元素,再删除对列1的最后一个元素,然后弹出ret,此时对列1为空,下次再调用pop接口的时候,就会从对列2中把元素再挪到对列1中。有了第一个元素之后,这个1保存在对列2中,对列1依旧为空,不插入元素,push[2],push[3],push[4]也一样,就不演示了。

2024-05-16 16:27:27 659

原创 简单题 有效的括号

题给字符串指针*s指向字符串首字符,已知字符串不为空,也就不用判空了,题里也说了字符只限定“{}()[]”这六个,因此可以只用if判断做题。虽然每个括号都能匹配,但是人家定的规则就是“就近匹配”,理解了这一点就不成问题了。1. 用if判断*s都是什么字符,如果是左括号直接入栈,作为待匹配字符。2. 如果是右括号,就去栈里面找最近入栈的左括号,看看能不能匹配。还有比较重要的一点就是利用栈的特点:后进先出,最后一个元素先出来。这里的括号匹配的规则是遇到右括号就要和做括号匹配。,判断字符串是否有效。

2024-05-15 15:12:09 476

原创 带头双向循环链表List

一个是头节点plist已知,头节点的前一个节点就是尾节点tail,再新建一个节点,把这三个节点重新连接一下就好了。发现头插头删尾插尾删都可以用pos位解决,因此如果时间比较紧,可以用Insert和Erase解决这四个接口。不用去省一两个变量,因为变量的多少几乎不影响程序的运行,是少量啊。最常用的一个是最简单的——无头单向不循环链表——单链表。一个是最复杂的——有头双向循环链表——双链表。头插也是三个节点:头,第一节点,新节点。尾删也是三个节点:头,尾,尾前一个。也是三个节点,头,一,二节点。

2024-05-14 00:29:21 738

原创 中等题 删除链表中重复的节点

先是prev和cur定位,一上来就发现两个节点不相同,就需要把prev所指向的节点尾插到新链表,这里是先用tail找尾,因为新链表为空,newhead既是头又是尾,直接尾插就可以了,然后是2,3节点,发现2可以尾接,就用tail从newhead开始找尾,找到尾后尾插,后面是3,3,发现不合适,就让cur后移,是334,prev移到4节点,cur后移,发现44相同就cur后移445,prev后移至5,cur后移到NULL,这是特殊情况了,直接尾接,让tail重新找尾,结束。先说说如何解题,解题的关键是什么。

2024-05-11 01:03:49 661 1

原创 中等题 对链表进行插入排序

本题来自在代码里面就有思路,要是看不懂去就看思路梳理。

2024-05-10 20:31:01 678

原创 中等题 随机链表的复制

本题来自。

2024-05-09 23:30:06 1170

原创 中等题 环形链表(妙解)

本题来自。

2024-05-08 21:04:43 808

原创 简单题 判断链表有环

本题来自。

2024-05-07 01:12:38 353

原创 简单题 相交链表

本题来自。

2024-05-07 00:33:11 718

原创 较难题 链表的回文结构

单链表的缺陷就是不能访问上一个节点,因此直接逆置后半段,来模拟倒着访问节点。

2024-05-06 23:43:17 383 2

原创 中等题 分隔链表

本题来自。

2024-04-28 13:08:27 291

原创 简单题 合并两个有序链表

本题来自。

2024-04-28 01:46:51 331

原创 简单题 链表中倒数最后k个结点

本题来自。

2024-04-28 01:01:44 336

原创 简单题 链表的中间节点

本题来自。

2024-04-28 00:32:35 416

原创 简单题 移除链表元素

本题来自。

2024-04-28 00:11:24 772

原创 如何快速的搓出一个在线oj链表的测试用例!!!

对于自己的测试用例,也就是用一个主函数快速创建一个链表,然后用调试的方式看看某个值是否为理想的效果——————本方法针对链表设计!在日常刷题的过程中,尤其是进入数据结构后,大量处理链表的问题,想要测试自己写的函数,但是又不知从何下手?用调式,代替打印链表,也能看某个节点的值,反正就是用最原始的方法再配合调试,通用任何链表题,不通用就评论区见。然后就是调用你想测的函数,可以F11进入函数去观察细节,也可以F10看最终的结果。就用最原始的方法,手动赋值,手动链接,这是最基本的链表。

2024-04-27 00:57:08 111

原创 简单题 反转链表

本题来自。

2024-04-26 22:02:53 883 2

原创 单向链表Single-List(SList)

链表,顾名思义就是像链子一样的结构,这种结构就像自行车的车链子一样,一环扣一环,觉得短了,随便找个地方拆开,新加一个环进去,这就延长了,哪一个地方需要被修改找到之后直接换掉,非常方便。链表是针对数组的缺点所创造出来的,数组中间插个数,要么全部后移,要么前移,反正数组不好从中间新长个空间,数组的头上插个数也不方便。头删又要分情况了,比较没有节点的时候,你是不可能去找下一个节点的,那么(*pphead)->next这个操作就是违规的。单链表的每个节点,有俩元素:也就是上面的大框,大框里面有俩小框。

2024-04-26 17:03:42 229

原创 简单题 数组形式的整数加法

本题来自说起来也挺搞笑的,这类简单题还能在数据结构里刷到,不就是把数挪过去,再相加吗,我的第一想法是这样的,唯一一个可能是初学c语言做不了的就是动态内存函数了,但是我学过了啊这类题,感觉也就是适合c++去做,用c语言太麻烦了,还要自己判断空间大小,还要建立一堆指针让每次填的数都准确的去该去的位置。

2024-04-26 15:53:39 608

原创 简单题 删除有序数组中的重复项

本题来自这道题和很像,解题方法非常类似,建议先做前面的题,然后在做本题,你会眼前一亮的做了这么多题,才发现,像力扣这样的刷题网站适合有一定语言基础的人去刷,至少应该是把基础的语言全部掌握才去刷题,不然的话,光用暴力去答题,总觉得差点什么。

2024-04-25 19:05:17 292

原创 简单题 移动元素

一个指针*(nums+i)遍历原数组,找到不是val的值,就把它给dst,这个dst每次移动一个步长,只要有符合条件的就给dst,这样由dst排列的元素就是符合要求的数组了,再用一个常量a来记录原数组有几个val(也就是需要删减的数字)这道题最大的难点再于如何在空间复杂度为O(1)的条件下完成判断,所以不能新建一个数组来将符合要求的数字存进去,这种传统的方法是不行的,这时候就要用双指针,一个指针dst从头开始,不管指向的是谁,这个指针就当新数组的指针。元素的顺序可以改变。的元素,并返回移除后数组的新长度。

2024-04-25 10:55:11 391

原创 简单题 动态口令——字符串左旋

依次将头元素放到后面,写一个循环,储存头元素,然后后面的元素依次前移,最后再把头元素放到末尾,这里是第一次储存a,把剩下的前挪就是“bcdef”,最后把a补上去,再循环一次就是b储存。假如我们有“abcdef”这个字符串,移2个吧,也就是把“ab”挪到后面去。再将剩下的部分翻转一下就是“cdef”》》》》“fedc”这道题应该还有另一个比较耳熟能详的名字,字符串左旋。三部翻转法,先将前两个“ab”翻转一下就是“ba”最后整体翻转“bafedc”变成“cdefab”请返回更新后的密码字符串。

2024-04-24 12:47:07 305

原创 简单题 位 1 的个数

n = 4294967293 (控制台输入 11111111111111111111111111111101,部分语言中 n = -3)编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数。利用按位与&,让输入的n值每一位都与1比较,利用一个while循环就可以解决了。判断一次就让n右移一次,右移的过程顺便判断那一位是否为1。循环的条件是n是否为0,因为当n为0时,一个1也没有了。中,共有三位为 '1'。中,共有一位为 '1'。

2024-04-24 10:44:42 140

原创 一篇文章吃透内存操作函数

本文是的续文,最好是先看了上一篇文章就好理解了。

2024-04-24 09:52:29 961

原创 一篇文章吃透字符串操作函数

记得没事就用assert断言来检查传入的是否是空指针,因为大部分传空指针的时候都是使用者未检查指针的有效性,头文件是,可以在assert的括号里面直接写指针,如果是空指针会被翻译成 0,可以直接被assert识别出来,也可以一次检查两个指针,用&&就可以。

2024-04-24 09:47:46 1288

原创 一篇文章搞懂顺序表SL(SeqList)

可以大概理解为一个程序运行起来的准备工作比较多,在准备阶段,把一个完整的程序会拆开,分成一段一段或者一页一页的内容,让他们独立完成,最后组装之前讲过的数据存储的位置,即栈、堆、静态区啥的,他们都有自己的存储方式,因此他们就有自己的数据结构可以创建一个main函数,再创建test1函数,其内部再调用test2函数,那么这个程序里面的函数,创建的顺序就是main->test1->test2,每个函数里面放一个变量,再打印这个变量的地址就会发现,这个地址会一直减小也就印证了,栈是向下生长的结论。

2024-04-24 01:20:26 1062

原创 面试题 消失的两个数字

本题目来源是这道题也是消失的数字升级版这道题也是在鹏哥C语言和航哥数据结构中都重点讲解的题目,当时只是大概一听,听会了而已,也没有实践,借着这次机会好好会会这个老友,发现真不太一般,感觉就是脑子好痒,要长脑子了~

2024-04-22 21:06:07 1299

原创 一篇文章读懂时间复杂度和空间复杂度

时间复杂度不计算时间,计算的是运算次数空间复杂度不计算空间,计算的是定义的变量个数。

2024-04-21 22:33:17 842

原创 看完这篇文章你的文件操作函数就可以出师了

看完这篇文章你的文件操作函数就可以出师了使用文件可以永久的保存数据在硬盘上,保存好的数据可以自行决定放在云盘还是什么地方这次主要讲的是如何或者里面的数据,并使用文件将数据直接存放在电脑的硬盘上,做到了。

2024-04-20 13:09:46 886

原创 一篇文章搞定动态内存函数

一般一个程序里面的所有空间在程序结束后会自动销毁,但是假如是为服务器写代码,这个服务器不会停止,就会一直有空间申 请后被遗忘,然后无限申请新内存,早晚会占完的。用人话说就是,柔性数组必须在结构体里面,还不能是第一成员,用的是数组的格式,但是后面[]不能放东西,这个数组可以接收之前动态内存函数申请的空间,并作为数组使用。由于多次申请空间,申请的时候都是随机找空间,造成每个空间中间的空隙的地方也无法使用,申请的次数越多,这种现象就月明显*就会替你去堆中重新找地方,并把原空间的数据拷贝到新的空间里面,然后。

2024-04-20 13:04:42 642

原创 一篇文章学会c语言最后一章——预处理及程序运行过程

有些东西是编译器或者库函数自带的符号,就是说之前重命名的时候,程序突然挂掉或者语法错误的时候,说符号重定义,意思就是这个符号库函数已经用过了,你不能再定义了,比如EOF已经被定义成-1了,就不能再定义了,不然程序就会报错还有其他比较有价值的符号,这些符号比较适合写日志,因为写日志的时候有一些比较繁琐的信息,像是时间、源文件名称啥的int main()//进行编译的源文件//文件当前的行号// 文件被编译的日期// 文件被编译的时间。

2024-04-20 13:02:20 774

原创 一篇文章搞定数据在内存中的存储

首先要知道都有哪些数据类型最基本的认识是基本的内置类型char //字符数据类型short //短整型int //整形1ong //长整型1ong long //更长的整形float //单精度浮点数dddouble //双精度浮点数整型家族charshortintsigned intlong浮点型家族floatdouble构造类型 - 自定义类型结构体类型 struct数组枚举 enum联合体 union指针类型int*char*float*

2024-04-05 21:44:05 869

面试题 消失的两个数字.pdf

面试题 消失的两个数字

2024-04-24

顺序表和链表.pdf

顺序表和链表

2024-04-24

预处理及程序运行过程.pdf

预处理及程序运行过程

2024-04-24

数据结构时间复杂度和空间复杂度.pdf

这是一个关于编程的资源,旨在帮助学习者深入了解和掌握相关概念和技能。资源提供了多样化的内容,包括详细的教程、示例代码、实践项目和练习题。它适用于各种级别的学习者,无论是初学者、中级学习者还是高级学习者,都能从中受益。通过这个资源,学习者可以建立起坚实的编程基础,扩展知识面,深入研究特定领域或语言,并与其他学习者共同成长。

2024-04-24

在C语言中经常用到的文件操作函数

这是一个关于编程的资源,旨在帮助学习者深入了解和掌握相关概念和技能。资源提供了多样化的内容,包括详细的教程、示例代码、实践项目和练习题。它适用于各种级别的学习者,无论是初学者、中级学习者还是高级学习者,都能从中受益。通过这个资源,学习者可以建立起坚实的编程基础,扩展知识面,深入研究特定领域或语言,并与其他学习者共同成长。

2024-04-24

C语言常用的动态内存函数

这是一个关于编程的资源,旨在帮助学习者深入了解和掌握相关概念和技能。资源提供了多样化的内容,包括详细的教程、示例代码、实践项目和练习题。它适用于各种级别的学习者,无论是初学者、中级学习者还是高级学习者,都能从中受益。通过这个资源,学习者可以建立起坚实的编程基础,扩展知识面,深入研究特定领域或语言,并与其他学习者共同成长。

2024-04-24

空空如也

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

TA关注的人

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