自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux工具】环境基石:软件包管理器 yum 与 Vim 编辑器详解

在 Linux 下安装软件,通常有下载源码编译和使用软件包管理器两种方式。软件包管理器(Package Manager)就好比手机上的“应用商店”,它将常用的软件提前编译好放在服务器上,用户可以通过简单的命令一键获取、安装、解决依赖。CentOS/RedHat: 使用 yum。Ubuntu/Debian: 使用 apt (Advanced Package Tool)。

2025-12-21 17:33:58 835

原创 【Linux】基础指令与权限体系详解

在 Linux 中,一切皆文件。文件和目录被组织成一棵倒置的树,根节点为 /。

2025-12-14 17:25:23 335

原创 【C++ 模板入门】:从泛型编程到函数/类模板详解

class 类模板名 {// 类内成员定义public:_size = 0;// 注意:模板定义和声明不能分离到 .h 和 .cpp,否则链接出错// 扩容逻辑(这里简化)++_size;C++ 模板是一个强大的工具,帮助实现泛型编程,避免重复代码。通过函数模板和类模板,我们可以编写通用代码,让编译器处理类型细节。初学者注意:模板在编译期工作,多练习实例化原理,避免常见错误如类型不匹配。

2025-11-29 15:31:22 297

原创 【C++内存管理】从 malloc 到 new 的底层进化之路

这是 C++ 搞出 new 的根本原因。malloc/free:只负责开辟空间和释放空间,不管对象的初始化和清理。new/delete: new:先开辟空间,然后自动调用构造函数。delete:先自动调用析构函数,然后释放空间。// malloc: 只是给了一块内存,对象没有初始化,无法正常使用// new: 开空间 + 调用构造函数(对象真正诞生了)free(p1);// delete: 调用析构函数 + 释放空间。

2025-11-23 19:43:10 492

原创 C++类和对象(下)

很多初学者认为在构造函数体内赋值(_a = a)和使用初始化列表(:_a(a))没区别,大错特错!对于内置类型(int, char),两者效率几乎无差别。但对于自定义类型,区别巨大执行流程:先调用 _n 的默认构造函数(初始化)。再调用 _n的赋值运算符重载(赋值)。执行流程:直接调用 _n 的构造函数(使用 一个 进行初始化)。结论:无论是否显式写在初始化列表里,为了效率,建议尽量使用初始化列表。有些变量,必须在出生那一刻就给值,就像人出生必须有身份证号,不能先出生再补办::引用必须在定

2025-11-22 13:55:18 1005

原创 C++类与对象(上)

在刷算法题时,我们习惯用struct和全局函数一把梭,但在工程开发中,数据安全和职责划分至关重要。

2025-11-21 20:33:52 797

原创 C++入门基础

语法:namespace name {/* */}定义命名空间,需要使用namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2025-11-11 14:35:51 634

原创 环形链表问题

建立快慢指针,快指针一次走两步,慢指针一次走一步,如果有环,则两个指针一定会相遇,且两个指针相遇时一定是在环上,且快指针最少在环里走了一圈,如图,根据几何关系分析可知,L =R-X+(n-1)*R。那么我们就可以建立两个指针,一个在起点,一个在快慢指针相遇的结点,同时开始走,则二者一定会在入环的点相遇。这个题目是链表中比较经典的。当有环时,可以这样分析。

2024-11-09 22:41:13 317 4

原创 链表相交问题

建立两个指针cur1,cur2,然后同时移动,若一个指针走到链表的尾结点,就让其继续从另一个链表的头节点开始走,当两个指针相同时,指向的就是第一个相交结点,这时他们经过的长度相同,均为cnt1+cnt2-cnt(cnt1,第一个链表的长度,cnt2,第二个链表长度,cnt,相交部分的长度)。当两个链表不相交时,两个指针会在两个链表的末尾同时指向NULL。之后cur1和cur2一起移动,当cur1与cur2相等时,指向的即为相交结点,如图。如图,B比A多一个结点,所以让cur2先走一个结点。

2024-11-04 16:53:56 437 1

原创 链表经典练习题讲解

这里提供一种解法,通过先快慢指针找到链表的中间结点,然后将中间结点开始的后半部分链表进行反转形成一个新链表,之后让反转后的链表与原链表的结点一一对比。这道题结构简单,这里给出一种快慢指针的解法,fast,slow,fast走两步,slow走一步,则当fast走到尾后,slow指向的就是中间结点。看到这里,不难发现,其实很多链表的题目做法有很多的共性,比如有时可以建立哨兵卫头节点,建立prev,或者尾指针等等。因为新链表的第一个结点不确定,所以先建立一个哨兵卫头节点,然后用尾指针去维护后面。

2024-10-29 18:01:19 949 4

原创 C语言实现双链表

这里实现的是双向带头循环双链表这钟链表每个元素都是以结点形式呈现,然后通过指针的方式将每个结点链接结点代码如下。

2024-10-22 15:08:39 484

原创 C语言实现单链表

参数部分毫无疑问得有头指针和要插入的数据,而这里采用二级指针是因为当链表为空时,尾插会改变头指针的指向(或者说是其next的值)。而尾插的思路也很简单,就是通过头指针去找链表的最后一个节点(指向NULL),然后在其后插入一个新节点。注意,这里实现的find函数是通过值来寻找的,而且只能找到从头指针开始的第一个符合的节点。因为这种结构的链表,节点都是从内存动态申请的,所以最后要释放,避免出现内存泄漏。这种链表一般是以节点形式呈现的,然后每个节点中都会有指向下一个节点的指针。头插思路也很简单,不多解释。

2024-10-13 14:50:50 822 1

原创 C语言实现顺序表

到此,一个顺序表就完成了,但是我们要知道,顺序表有有点也有缺点,优点是取出元素的复杂度为O(1),插入和删除的复杂度也较高,最大可达到O(n)。注意,找元素返回的是元素对应的下表,该函数可以结合前面的SLInert函数以及SLErase函数来使用,实现指定元素周围的插入或删除。我们在插入元素之前首先要考虑的是容量是否够,若不够的话就需要扩容,对于扩容我是通过一个函数来实现的,代码如下。插入代码,首先要判断容量是否够,然后将要插入位置以及之后的元素都向后移动一位,将要插入的元素放进去。

2024-09-23 17:01:14 830

原创 用C语言实现简易三子棋游戏

打印这样的棋盘很简单,我们需要考虑如何实现下棋的操作,以及如何在棋盘上响应我们的游戏操作,在这里我将会借助一个二维数组,而如果将棋盘上的所有内容都存在数组中,那未免有些麻烦,所以我们可以只存每一个中心的元素,然后初始时将其设置为空格。对于该函数,外层循环控制打印的行数,内层循环需要控制打印的列数,其中有几个需要注意的点,每行只需要打印col-1次 " | ",所以要加一个if(j<col-1)的条件,以及最后一行不要打印”——“,所以下面加上if(i<row-1)的条件。

2024-09-07 15:09:25 585 1

原创 用C语言实现猜数字游戏

我们只需要在game函数中加上两条语句.system("shutdown -s -t 60")这条语句的作用就是定时1分钟关机,system("shutdown -a")这条语句则是取消关机,当然,不要忘记包含头文件<windows.h>.接下来你需要做的是将存这个代码的文件夹中后缀为exe的文件发给你的朋友,若他1分钟内猜不出来,那么就可以关机省电了哈哈。而想要进行游戏,我们必须先生成一个随机数供我们猜,生成随机数我们可以用以下代码实现。至此,一个简易的猜数字游戏就完成了。game函数的实现如图。

2024-09-04 23:48:43 506 4

空空如也

空空如也

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

TA关注的人

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