自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】基础IO

如果学过其他编程语言,那应该都知道文件操作以及IO,那么在linux中,文件操作又是如何进行的呢?以及我们应该如何理解文件操作和IO?

2024-07-22 20:33:31 970

原创 【Linux】进程控制(shell的模拟实现)

和。

2024-07-12 19:19:25 765

原创 【Linux】进程的基本概念(以及进程地址空间的初步了解)

根据书本上的概念来解释,一个运行起来被加载到内存中)的程序称为进程。光这样一句话很难体会到什么是进程,所以我们来展开讲一下。上面的问题,我们先放一放,我们来解释一下什么是地址空间。在学习C/C++的时候,应该都见过这个图,为什么这个图叫做C/C++的内存分布,而不是内存条的内存分布?那既然有C/C++的内存分布,那是不是说明还有其他语言的内存分布,为什么同一块内存条上,不同的语言会有不同的内存分布呢?那是因为这个C/C++内存分布其实是虚拟地址,这个内存分布的地址不是真实的,这个虚拟地址就叫做。

2024-07-10 15:13:48 948

原创 【C++】map和set的模拟实现

在本篇博客中,作者将会带领你C++STL库中的,其中我只实现一些比较重要的成员函数,在进行之前,你需要先懂得,因为map和set的。

2024-07-09 16:29:34 805

原创 【数据结构】红黑树实现详解

红黑树是一棵二叉搜索树,它的结点不是黑的就是红的,其中它有一个非常重要的通过对任何一条从根到叶子的路径上各个结点的着色控制,保证了红黑树没有一条路径会比最短路径长出两倍,达到接近平衡的特点。看到这句话,可能你还云里雾里的,但是不要怕,简单的来说,红黑树的特点就是:找出树中最短的路径和最长的路径,其中这条最长路径的长度不会大于最短路径长度的两倍。如下图所示:在这棵红黑树中,最短的路径是最左边的那条,长度为3,最长的路径是最右边的那条,长度为4,即4 < 2*3,最长的路径不会大于最短路径的两倍。

2024-06-17 19:15:39 742

原创 【数据结构】AVLTree实现详解

在二叉搜索树的博客中,我们提到了,当插入的数据有序或者接近有序的时候,二叉搜索树会退化成单支树,导致其效率变低,所以为了解决这种情况,于是我们提出了AVLTree,即二叉平衡搜索树。如下图就是一棵二叉搜索树退化成的单支树。那么AVLTree又是如何实现使二叉树搜索树不会退化成单支树的呢,它又是如何保证效率的呢?因为AVLTree严格的要求左右子树的高度差不能大于1,且每一棵子树也一样。如下图所示。

2024-06-08 12:45:11 1110 2

原创 【C++】二叉搜索树

首先我们来看一下树结点的定义。//成员变量K _key;//成员函数Blog_TreeNode(const K& key)//构造函数:_key(key){}树结点的定义不是很难,就二叉树常规的定义即可。我们可以把树结点封装到一个Blog_Tree的类中,在类中实现它的成员函数。//typedef一下,这样在类中可以使用Node来代替Blog_TreeNodepublic://构造函数{}private://成员变量为一个根节点的指针。

2024-06-01 12:45:38 1175

原创 【C++】多态(多态的原理)

那么知道了什么是多态,现在就来讲解一下多态是如何定义和实现的。首先我们直接来看一段构成多态的代码。看到这里,可能会有同学以及有点分不清了,因为多态有重写,继承有重定义,同时函数又有重载,初学者可能很容易搞混。所以在这里我们进行一个讲解。两个函数在同一个作用域中。函数名相同,参数不同(类型不同,顺序不同,个数不同)。两个函数分别在基类和派生类中。两个函数都是虚函数。函数名、返回类型、参数列表相同(两个例外除外)。两个函数分别在基类和派生类中。函数名相同。不符合重写就是重定义。

2024-05-23 21:51:57 980

原创 【C++】继承(菱形继承的深入理解)

C++继承深入理解

2024-05-12 22:24:07 1025

原创 【C++】stack、queue和priority_queue的模拟实现

容器,适配器,空间配置器,仿函数,迭代器,算法。其中像这种数据结构叫做容器,而像这种数据结构叫做适配器。为什么呢?因为stack和queue是通过deque这个容器转换过来的,也就是说,将deque容器的成员函数转换成stack和queue的成员函数通过查看C++的手册,发现stack和queue类中有一个模板,其中第二个模板参数就是deque,即在stack和queue类中,是通过deque这个容器来实现的。可能看到这里,还有同学不懂适配器到底是什么,那么在这里通过几张图来解释一下。

2024-05-06 19:18:21 774

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

在模拟实现list之前,我们来梳理一下list的基本结构。list是一个的链表。所以对list的模拟实现,我们可以先,然后再在list类中去存放来实现。

2024-04-27 13:04:27 1312

原创 【C++】模板进阶

所以模板函数不适合分离编译,如果是一个模板函数,则函数的定义和声明要写到一个文件中。【优点】1.模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2.增强了代码的灵活性【缺陷】1.模板会导致代码膨胀问题,也会导致编译时间变长2.出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-04-27 10:25:39 1034

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

否则会出现。

2024-04-20 00:34:50 837 2

原创 【C++】二维数组传参方式

最近刚开始刷剑指offer,刚做到第三题的时候,发现C++二维数组的传参方式和C语言,所以在这篇博客中,会列出C/C++常见的二维数组传参方式。(本方式和代码都是基于vs环境所编写)

2024-04-17 23:46:59 1144

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

在本篇博客中,作者将会带领你的STL中的string类的。至于string的常规使用,这里不做讲解。string类的c++参考文档。

2024-04-17 21:20:42 1099

原创 【C++】模板初阶

也可以比作是一个,通过这个模具能做出的东西。单靠这样解释,很难解释的通,所以接下来举个例子的解释。如果我们想要实现一个符合,我们可以使用来实现。虽然函数重载确实可以帮我们做到,但是这样做未免太麻烦了,的函数要写很多份,而且如果有新的类型需要实现这个功能,又要多写一份,这样做过于麻烦,那么有没有一个方法可以很好的解决呢,答案是模板。

2024-04-04 23:08:28 591

原创 【C++】为什么能实现函数重载

从C语言一路学到C++的途中,C++语言C语言相比,多了个函数重载,那么函数重载是如何实现的呢,为什么C语言无法支持,在本篇博客中,将会讲解C++为何能实现函数重载。

2024-03-31 10:56:20 354

原创 【C++】内存管理

来说有。

2024-03-29 15:56:40 910

原创 【C++】类与对象(下篇)

(且该类没有默认构造函数)。

2024-03-24 15:39:56 533

原创 【C++】类与对象 (中篇)(6个默认成员函数)

如果一个类中什么成员都没有,叫做空类,那么空类真的就什么都没有吗,其实并不是,类在什么成员都不写的时候,编译器会默认生成6个成员函数。默认成员函数:在用户没有显示实现时,编译器会默认生成的成员函数就做默认成员函数。

2024-03-16 15:37:12 911

原创 【Linux】常见的基本指令(下)

在本篇博客中,继续介绍Linux的常见的基本指令。

2024-03-12 15:43:26 814

原创 【Linux】常见的基本指令(中)

在本篇博客中,将会继续介绍Linux的常见的基本指令。

2024-03-07 19:48:52 460 2

原创 【C++】类与对象(上篇)

/用struct定义类int _year;int _month;int _day;//用class定义类class dateint _year;int _month;int _day;在C++中,有两种方法来定义类,但是在C++中,用class来定义类更常见。知道了C++中多了类,那么类一般是如何定义的?一般来说,类的定义有两个方式。类的成员函数的声明和定义都放在类中。int _month;int _day;

2024-03-05 22:37:15 943 1

原创 【Linux】常见的基本指令(上)

在这篇博客中,将会介绍到Linux操作系统的基本指令。

2024-03-03 15:30:38 611

原创 【C++】基础篇

同样的,我们也可以定义自己的命名空间。int a = 10;如上所示,calculator就是我们自己定义的命名空间。

2024-03-02 16:06:51 1010

原创 【C语言】外排序(归并思想)

我们通常写的排序都是内排序,即数据都是在内存中直接进行排序的,如以下几篇博客介绍的排序都是内排序。【C语言】排序(一)(直接插入排序、希尔排序)-CSDN博客【C语言】排序(二)(选择排序,堆排序)-CSDN博客【C语言】排序(三)(快速排序:递归与非递归实现)-CSDN博客【C语言】排序(四)(归并排序:递归与非递归实现)-CSDN博客那么外排序到底是什么?当我们需要对一堆数据进行排序的时候,如果这些数据非常的多,数据多到不能一下子全部加载到内存中的时候,我们就需要使用外排序。

2024-02-22 15:33:03 871 1

原创 【C语言】文件操作

在我们学习C语言的时候,的学习是必不可少的,在本篇博客中,作者将会带领你文件操作。

2024-01-24 15:58:09 1006 1

原创 【C语言】指针的高级用法(指针数组,函数指针,函数指针数组,回调函数)

那么函数指针数组如何定义呢?如下所示。

2024-01-18 15:23:27 1012 1

原创 【C语言】归并排序(递归、非递归实现)

在本篇博客中,作者会带领你理解和实现,并且将会使用递归和非递归两种方式分别实现。

2024-01-03 16:52:41 495 1

原创 【C语言】快速排序(递归、非递归实现)

【C语言】快速排序算法:递归与非递归实现

2023-12-28 18:51:58 1587 1

原创 【C语言】选择排序、堆排序详解

选择排序和堆排序详解

2023-12-23 16:11:29 323 1

原创 【C语言】插入排序、希尔排序详解

直接插入排序和希尔排序的实现详解

2023-12-23 12:38:33 1301 1

原创 【C语言】堆的实现(建堆、堆的基本操作、堆排序、TOK问题)详解

大堆什么是堆?堆是一种为的数据结构,堆又分为两种,一种是,一种是。什么是完全二叉树?完全二叉树是,除了最后一层外,其他层都是满的,而且最后一层的结点都靠左排列。什么是大堆?什么是小堆?大堆为都大于它的左子树结点和右子树结点的值。小堆为都它的左子树结点和右子树结点的值。堆有什么用?堆可以用来选数、排序等且时间复杂度非常低。

2023-12-19 10:46:07 1900 1

原创 【C语言】反转单链表

就会无法找到,所以需要三个指针分别记录前、中、后结点。④.整体移动prev、head、tail。②.tail指针指向head的下一个。,改变当前结点的连接关系后,则它的。③.改变head的连接关系。①.prev指针先指向空。①利用三个指针分别指向。

2023-12-09 21:58:32 231 1

原创 【C语言】环形链表(链表经典带环问题)

链表经带带环问题

2023-11-27 21:36:31 989

原创 【C语言小游戏】扫雷实现详解(可递归扩展)

【C语言】扫雷实现详解(可递归扩展)

2023-11-21 15:37:03 133 1

原创 【C语言】结构体内存对齐

偏移量为0对齐到某个数字(对齐数)的整数倍较小值占用字节最大字节数默认对齐数较小值(这里说的不是很好,详细解答看下面的例子)

2023-10-31 00:04:26 74 5

原创 【C语言】什么是大小端,怎么分辨大小端。

大小端是指数据在内存中存储的方式,这种方式有两种,一种是大端存储,一种是小端存储。

2023-10-14 16:21:36 112 1

原创 【C语言】字符串函数详解及实现(strlen,strcpy,strcat,strcmp)

函数声明如下:函数参数为一个指向字符串的指针,返回值为一个int型。strlen函数是求一个字符串的长度,当在字符串中遇到‘\0’时,则会返回前面字符的个数。

2023-09-20 21:15:02 470 1

原创 【C语言】结构体详解

结构体声明好后,应该怎么定义和初始化呢?如下: 直接在主函数中初始化,也可以在声明时初始化int num;int age;}s1;int main()struct Student s2 = { "张三",123456,20 };return 0;注意:在声明初始化s1的时候,这个时候s1的全部值会默认全部赋值为0,而在s2中,若没有主动给它赋值,则s2的全部值默认位随机值。

2023-09-09 11:37:19 40 1

空空如也

空空如也

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

TA关注的人

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