自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自定义myshell(精讲)

我们这里只是探讨了shell的冰山一角,其实还有很多,但是,一直写就没什么意义了,自定义shell的意义其实就是打通之前所学的知识,将他们串起来,教学意义。

2025-03-20 15:40:21 946

原创 算法01----移动零(C++)

我们这里要用到的算法是双指针移动,和我们之前学的快排的核心思想是一样的。我们看看怎么做吧。我会以图片的形式将我的思路告知大家。这就是整个题目的整体思想算法,大家理解一下,其实这道题目还是很简单的。

2024-10-21 22:54:31 248

原创 算法题---动态规划

题目展示:动态规划的题目我们一半分为5个步骤去分析,第一,状态表示;第二,动态转移方程;第三,初始化;第四,填表顺序;第五,返回值。

2024-10-14 22:30:19 273

原创 自己写string类

我们写string类不是为了和先人比较谁写得更好,而是去了解string最底层是怎么实现的,我们将通过这篇文章来自己实现string的一些简单的功能。大家和我一起动手实现一下吧。我先将string.h附在下面,上面写的所有函数都是我们要在string.cpp里面实现的。我们将一步一步实现string类。

2024-10-02 16:12:20 669

原创 STL--string类

我们从这篇文章之后就正式开始学习STL的string,字面看起来是不是像C语言里面的字符串之类的处理方法,是的,C++里面也是对字符串的一些处理函数,但是C++有很多这样的函数,给大家推荐一个网站 ,这个网站是C++的官网,里面有所有函数的使用方法,当我们不会用这个函数的时候就可以去这个网上去查。我们就来详细说说string类的一些重要函数吧。

2024-10-01 15:53:01 400

原创 C++伟大发明--模版

C++起初是不受外界关注的,别人觉得他和C语言没有本质上的区别,只是方便些,直到祖师爷发明了模版,开始和C语言有了根本的区别。我们通过一个小小的例子来搞清楚什么是模版,模版的作用到底有多大,平时我们想要写交换函数是不是这样写的。我们一般要通过函数重载来实现,但是这样做有两个坏处,第一是,代码的复用率不高,如果遇到其他情况我们也要自己重新写函数,第二,程序很难维护,一个地方出错可能全部要重新写,维护成本极高,所以,我们就使用模版,可以很好的解决这个困扰。

2024-09-18 21:31:34 526

原创 C++的内存分布

我们看一段代码。这就是C和C++的区别。C++的new和delete会调用构造函数和析构函数,但是malloc不行。这就是区别,当然内置类型也是一样的。

2024-09-16 11:09:48 663

原创 详说 类和对象

我们上一篇文章也说了构造函数,但是还有一个 部分没有讲,就是构造函数的初始化列表。初始化列表这个挺麻烦的,大家认真理解一下。1. 初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式2.每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地⽅。3. 引⽤成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进⾏初始化,否则会编译报错。

2024-09-13 16:20:08 675

原创 详说 类和对象

类是什么呢?类就是我们上篇文说的命名空间,单独创建一个域,自己有自己的生命空间,那么类怎么定义呢?C++规定,假设 stack就是他的类名,那么前面要加个class,换行之后就是他的类的内容,类里面有定义的变量和我们自己的成员函数,要注意的是,C++兼容C语言,所以也是可以用struct代替class成为关键词的,唯一的区别就是,struct默认变量和成员函数是公有的,而class默认是私有的,为了更好理解,我们贴个代码。上图就很好的展现了struct 和 class的区别。

2024-08-31 16:08:46 621

原创 C++初阶--命名空间、输入输出、缺省函数、函数重载、引用

从这一篇章开始就进入C++了,这是一门建立在C之上的语言,也广泛应用在以后的工作之中,所以我们应该努力吃透这门语言。

2024-08-10 10:20:43 875

原创 非递归的归并排序

我们之前讲的快速排序有非递归的写法,那么归并排序也有非递归写法,我们一起来研究一下吧。,所以说,这次的归并排序就不能用搭栈的方法来实现非递归,那么,我们怎么实现呢?思路,我们让这个数组先每个数一组,然后,使每一组都有序,然后,使每两组都有序,以此类推,我们就可以让整个数组有序。废话少说,大家看图:相信我画的这幅图应该很清楚的表述了我的思路。

2024-08-03 10:44:07 260

原创 --归并排序--

归并排序是我们研究的最后一种排序了,那什么是归并排序呢?我们之前在力扣上面刷过一个题目,就是合并两个有序数组,其实也是和这个是一个思想借用第三个数组,然后将第三个数组拷贝给a数组,这样就实现了排序,接下来,我给大家展示一下归并排序的完整过程,这个动图很好的展现了归并的思想,但是我们首先是让左区间有序,然后让右区间有序,最后再归并。

2024-08-02 10:51:14 224

原创 非递归的快速排序

其实,我们快速排序还有一种更加快的方法就是不采用递归的方法,那就是非递归,所以这一篇文章我们就研究这个非递归到底怎么实现。首先,我们先思考一个问题:递归的时候,我们存到栈里面的到底是什么?以上图片简单模拟的是我们的递归过程,很直观地看出这个过程中,我们在栈里面存的是这个数组的区间,存的是区间!所以,我们可以模拟这个存区间和递归的过程,那么什么可以让我们存区间,并且取出区间,而且还要模拟递归的过程,后进先出,就是栈。

2024-08-01 10:08:28 287

原创 快速排序的优化--前后指针

我们前面文章讲的核心思想是haroe的核心思想,将keyi另一边的指针先移动,找比keyi小的,然后不动,再让keyi这边的指针移动,找比keyi大的,但是这种方法的局限性就是需要让keyi另一边的指针先移动,但是我们马上要研究的前后指针是不用考虑这么多,而且也很容易理解,这种方法也很实用,希望大家可以掌握。我们先上动图,让我们更好的理解一下这个前后指针到底是怎么实现的呢?就如图中所说,让cur和keyi比较,如果cur小于keyi,那么就让prev先走一步,然后将prev和cur交换,然后cur++

2024-07-29 10:57:40 294

原创 快速排序的优化1.0

单位是毫秒,HeapSort是堆排序耗费的时间,QuickSort是快速排序所耗费的时间,很明显可以看出其实堆排序的效率还是高于我们的快速排序的,但是我们还是不满足,我们就是要和堆排序肩并肩,和他平齐平坐,我们就要使用一些特殊手段,就像上面标题写的我们要将插入排序融合到快速排序里面去,这样效率就更高,具体怎么做?首先,我们先让这个程序运行一次单趟,然后就被分成了两组,将这两组分别插入排序,这样的效果就会好很多,达到和堆排序平齐平坐的效果,我们看结果。

2024-07-27 15:42:55 157

原创 面试重点---快速排序

快速排序是我们面试中的重点,这个知识点也很抽象,需要我们很好的掌握,而且快速排序的代码也是非常重要,需要我们懂了还不行,必须要手撕代码,学的透彻。在研究快速排序之前,我们首先看一个动画,先自己看几遍,看能不能看懂它在干什么。这个动画就是我们快排的总体过程,如果你没有看懂也不用急,我用文字来帮助你理解这个过程。

2024-07-27 15:24:41 576

原创 插入排序和希尔排序

插入排序就是从第一个数开始,将前面的数都想成有序序列,将后一个数与前面的所有数比较排序。就好像我们玩扑克牌,先将手里的牌排好序,然后抽到的新牌再和前面的牌排序,这就是插入排序,下面有一个动图,能够帮助大家更好的理解。是不是已经理解了呢。但是我们要用代码实现,应该怎么做呢?

2024-07-19 10:29:55 397

原创 层序遍历及其应用

层序遍历就是将树放入队列中,按照“进父带子”的规则,依次将树里的数据遍历一遍。

2024-07-14 11:33:43 335

原创 二叉树实战演练

这五个题目都是围绕二叉树的题目,围绕二叉树的题目自然离不开递归思想,这个在五个题目里面每个都有用到,也是我们必须掌握的思想。望大家看了这篇文章之后都能有一定的收获。

2024-05-24 22:37:07 971

原创 向上调整建堆和向下调整建堆的比较

我们上一篇文章讲解了向上调整建堆和向下调整建堆是什么,这一篇文章我们就仔细分析一下这两个建堆方式到底哪个比较好。

2024-05-19 20:50:52 302

原创 堆排序详解

肯定很多人都会想建大堆,但是可行吗?答案是不行,如果建大堆就是从堆顶拿最大数,但是拿走了以后,就会造成关系一团乱的局面,所以我们只能建小堆,然后将最小的与最后一个交换,然后不参与下一轮排序,这样就可以达到我们降序的目的。

2024-05-18 10:32:32 181

原创 函数栈帧的创建和销毁讲解

我们平时在使用函数时编译器是怎么工作的?内存是怎么处理的呢?使用的时候从来没有探究过这个底层逻辑,今天我们就从底层来讲解函数栈帧的创建和销毁吧。带领大家一起来探讨原理。首先我们先写一个简单的代码,如右图所示,创建了一个Add函数,然后main函数调用了他。

2024-05-17 23:11:40 415

原创 手把手带你实现堆

堆他是一个有规律的数据结构,除了叶子,他的每个节点都要满足两个子节点。所以我们将用数组来实现它。本篇以小堆为例。

2024-05-16 15:16:06 510

原创 二叉树详解

树的相关概念:节点的度:一个节点含有子树的个数称为节点的度。叶节点:没有子树的,度为0的称为叶节点,如上图的J,K,L 所示。父节点、子节点:如上图A和B的关系所示。兄弟节点:有共同父节点的亲兄弟节点。树的高度和深度:树的节点的最大层次,上图就是4。节点的祖先:从根到该结点所经分支上的所有结点,上图的A就是所有节点的祖先。森林:多棵不相交的树。

2024-05-16 14:09:50 405

原创 用栈实现队列,用队列实现栈

其实这个题目就是纯为难我们,没有什么实际的意义,但是有教育意义,可以考验我们对这两个数据结构的掌握。我们该怎么用队列来实现栈呢?我直接说方案吧,就是设置两个队列,用倒数据的方法来实现栈。

2024-05-13 21:43:12 229

原创 LeetCode---循环队列

在head出,tail进,但是这个如果用数组解决的话,就有问题,力扣给我们的接口有一个判空和判满,如果我们k等于4,那创造一个大小为4的数组,head和tail都等于0,所以队尾等于,tail减一,当head和tail相等时,该数组为空,但是当这个数组满了的时候,head和tail也是相等的,那怎么办呢?我们有两个解决方案,第一,设置一个size,第二,给数组多创建一个空间,如果k为4,那我们就把数组的大小设置为5。这样,我们实际上k的大小不变,但是每次都会多留一个空间,让head和tail保持不同。

2024-05-13 21:38:45 165

原创 LeetCode --- (有效的括号)

这就是整个代码的样子,整体思路就是:如果这个字符串解引用的字符是左括号,那就进栈,否则(右括号)就与栈里的栈顶的数据相匹配,一旦遇到不匹配的,那就返回false,还有一种特殊情况,就是左括号与右括号的数量不匹配,就有可能造成else走完了,并且都匹配,但是左括号剩了一个,所以出循环的时候要判断一下栈里还有没有数据。

2024-05-12 11:44:20 376

原创 栈和队列详解---(下)

队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的规则,进行插入操作的一端成为队尾,进行删除的一端是队头。

2024-05-12 10:58:10 780

原创 栈和队列详解---(上)

栈是一种特殊的线性表,其只允许在固定的一段进行删除和插入元素的操作。进行数据插入和删除的另一端成为栈底。

2024-05-10 17:02:56 369 1

原创 随机链表的复制

那就是我们申请四个节点,并且分别插在要复制的节点的后面,复制他的val,next指向本来的next,random就是原节点的random的next,这就是整体思路,很难懂,我们画一个图吧。

2024-05-02 15:38:29 53 1

原创 环形链表题目分析

1.为什么快慢指针能够相遇?2.如果我让slow走一步,fast走3步,4步,5步还能追上吗?

2024-05-01 14:59:33 417 2

原创 二分查找详解

二分查找的思路和二分查找的端点分析

2024-04-27 13:16:52 245

原创 单链表的几个经典算法题

相交链表;返回倒数第k个节点的值;链表的回文结构

2024-04-27 11:22:08 241

原创 结合C语言和链表来写一个贪吃蛇小游戏

C语言函数、结构体、链表、枚举、动态内存管理、预处理指令、Win32 API。

2024-04-25 15:46:12 579 2

原创 C语言程序编译和链接

C语言中存在着两种编译环境,一种是翻译环境,另一种是运行环境。翻译环境是将源代码转换成机器可执行的命令(二进制指令);运行环境则是将执行这项指令。

2024-04-05 10:49:46 743 1

原创 文件与文件操作---通俗易懂

总的来说,我这篇文章还是很通俗易懂的,因为我自己也是新手小白。完。

2024-04-03 15:55:03 647 1

原创 位段--山重水复疑无路,柳暗花明又一村

先给大家看一下题目。

2024-03-25 17:52:12 466 1

原创 结构体---大部分知识点

结构体的定义是很简单的,主要是初始化和创建,那么就看具体代码吧。这个就是结构体从创建到初始化的具体过程,别看着简单,其实非常需要动手操作一遍,才能够不在细节上犯错误。

2024-03-23 11:30:50 779 1

原创 整数和浮点数在内存中存储--深入理解

这就是整数和浮点数在内存中的存储

2024-03-21 14:43:41 419 1

原创 字符函数和字符串函数的模拟实现---指针的熟练运用(3)

strcat

2024-03-16 11:18:21 152 1

空空如也

空空如也

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

TA关注的人

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