自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手撕一颗AVL树:从理论到代码的完整指南

✅ 深入理解了AVL树的平衡机制。✅ 掌握了旋转操作的实际应用场景。🔧 添加删除操作的实现。🔧 增加树的可视化输出,便于调试。

2025-04-13 16:03:43 234

原创 深入理解C++多态:从虚函数到虚表,再到虚继承

多态是C++面向对象的核心,深入理解虚函数、虚表、虚继承等机制非常重要。本文示例代码已上传至Gitee仓库链接t=P1C7Gitee仓库链接https://gitee.com/roaring-black-fertilizer/cpp/commit/8d22691aef784404cb6633994c40a12ac1f893a9。

2025-04-02 13:18:43 759

原创 手撕C++ STL list容器:从指针缠绕到迭代器封装的实践笔记

最近在学习STL容器的底层实现,发现双向链表(list)的设计非常巧妙。为了深入理解其原理,我决定从零实现一个简化版list。本文将分享我的实现思路、踩坑记录以及关键代码解析,完整代码已上传至Gitee仓库Gitee仓库list<A> lt;// 通过->访问成员通过这次手写list的实现,我深刻理解了:迭代器如何屏蔽底层指针差异环形链表结构对边界处理的简化模板编程在容器设计中的威力未来优化方向添加反向迭代器实现异常安全保证支持自定义内存分配器。

2025-03-23 21:35:49 679

原创 手撕一个STL风格的vector容器:详解与踩坑记录

通过实现一个简化版vector,我们深入理解了动态数组的内存管理、迭代器失效机制、深拷贝必要性等核心概念。完整代码已托管至Gitee仓库,建议结合测试用例进行调试学习。希望本文能为你的STL学习之路提供一盏指路明灯!t=P1C7。

2025-03-20 16:34:31 896

原创 手撕一个C++ string类:深入理解字符串操作与内存管理

手动实现string类不仅加深了对字符串操作和内存管理的理解,也让我体会到标准库设计的精妙之处。未来将继续优化此实现,并探索更多底层技术细节。希望本文能为你的学习提供启发!t=P1C7源代码链接https://gitee.com/roaring-black-fertilizer/cpp/commit/13317b2cacfdc490bade7c0fb4e97b39928240c1。

2025-03-18 16:14:36 840

原创 《C++类和对象进阶:日期计算与异常处理》

假设用户输入,这个日期不存在怎么办?

2025-03-14 18:04:18 383

原创 《运算符重载:打造智能Date类》

这就是代码中实现的魔法——。+=+=

2025-03-14 18:04:01 306

原创 C++面向对象编程入门:封装艺术

假设你要开发个智能日历,核心就是处理日期。这正是封装要解决的典型问题——通过构造函数/析构函数管理资源生命周期。这就是封装的威力——把危险操作关在笼子里。的关键字,像交通信号灯一样控制访问权限。这时候就需要C++的。咆哮的黑化肥/cpp。

2025-03-14 18:02:33 670

原创 实现常见排序算法(下)——高级篇

本文详细解析了快速排序的三种分区策略、非递归实现,以及归并排序和计数排序的核心逻辑。完整代码已同步至 GitHub/Gitee 仓库,建议结合代码调试加深理解。各算法对比排序算法平均时间复杂度适用场景快速排序O(n log n)通用场景归并排序O(n log n)外部排序计数排序小范围整数t=P1C7t=P1C7。

2025-02-19 21:27:55 721

原创 实现常见排序算法(上)——基础篇

总结:基础排序算法虽简单,但包含了重要的设计思想(如分治、预处理)。实际开发中需根据数据规模选择合适的算法。下篇将深入讲解快速排序、归并排序等高级算法,敬请期待!t=P1C7t=P1C7点击查看https://github.com/black985211/initial-data-structure/commit/aa0ed7b815c9e9e37264d54a942a8ee67af442a6。

2025-02-18 16:15:57 650

原创 学习二叉树层序遍历:代码实现与详细解析

刚学完二叉树的层序遍历时,我对着课本上的示意图发呆了半小时——明明知道是按一层一层的顺序遍历,但代码就是写不出来。直到自己动手把队列和二叉树结合起来调试,才真正理解了"队列是层序遍历的灵魂"这句话。今天就把我的学习过程整理成这篇实战笔记,手把手教你在C语言中实现这个看似简单实则暗藏玄机的算法!

2025-02-14 12:13:49 717

原创 从零实现C语言大顶堆:代码详解与排序实战

结构,满足任意节点的值总是不小于(大顶堆)或不大于(小顶堆)其子节点的值。常用于实现优先队列、堆排序等场景。本文将通过C语言代码,手把手带你实现一个动态扩容的大顶堆,并完成堆排序实战!堆排序分两步:建堆(向下调整) + 依次交换堆顶与末尾元素。删除堆顶元素时,将末尾元素交换到堆顶,再通过。插入元素时,先将其放在数组末尾,再通过。登录 - Gitee.com。堆(Heap)是一种。

2025-02-11 18:03:55 401

原创 从零实现C语言栈与队列:代码详解与实战测试(文末附完整代码仓库链接)

栈(Stack)和队列(Queue)是数据结构中最基础且应用广泛的两个概念。栈遵循。

2025-02-09 08:31:10 927

原创 手把手教你实现C语言双向链表:从入门到实战 (完整代码已上传至Gitee)

哨兵位的优势:避免处理空链表的特殊情况,代码更简洁。时间复杂度O(1)O(n)优化点:可增加链表长度字段,快速获取长度。

2025-02-09 08:17:25 734

原创 C语言实现单链表:增删改查全都安排上了

前段时间在学习数据结构的时候,对单链表操作有了一定的认识,于是写了一个简易的单链表来练手。写完之后,感觉对链表的增删改查逻辑一下子清晰不少,特地记录下来,希望能帮到正在学习链表的朋友们。单链表(Singly Linked List)是一种动态数据结构,每个节点包含数据和指向下一个节点的指针。当然,单链表也有缺点,比如不支持随机访问,查找元素需要遍历链表,时间复杂度为O(n)。:在已知节点位置的情况下,插入和删除的时间复杂度为O(1)。:每个节点包含数据域和指针域,指针域指向下一个节点。

2025-02-07 20:22:55 839

原创 从零实现顺序表:我的数据结构入门实践与心得

最近在学习数据结构,顺序表作为线性表的入门内容,自然是我的第一个实战目标。,查询效率高(O(1)时间复杂度),但插入和删除需要移动元素,效率较低(O(n))。对于新手来说,实现顺序表能帮助理解数组、内存管理和数据结构的基础设计思想,是个不错的练手项目。下一步计划实现链表,对比二者的差异,进一步巩固知识。顺序表(SeqList)的核心在于“连续存储”,这与链表的“离散存储”形成对比。:最坏情况下(在头部插入)需要移动所有元素,效率较低,这也是顺序表的短板。插入元素时需要将后面的元素后移,删除时则需前移。

2025-02-07 20:04:55 782

原创 使用C语言实现自定义排序函数:模仿qsort实现my_qsort

在C语言中,标准库函数qsort是一个灵活且强大的通用排序工具。为了加深对其实现原理的理解,我尝试模仿qsort实现了一个简单的排序函数my_qsort,支持对任意类型数据的排序,并允许用户自定义比较规则。本文首先简要介绍了qsort的使用方法和功能,然后详细分享了my_qsort的实现过程,包括核心函数swap、cmp以及冒泡排序逻辑。通过本次实践,我不仅复习了指针操作和内存管理,还对排序算法的实现有了更直观的理解。

2025-01-25 19:59:56 921

原创 C语言数据存储原理:整数类型、字符类型与内存管理

本文深入探讨了C语言中的数据存储原理,重点介绍了整数类型、字符类型以及与内存相关的基本概念。通过具体的代码示例,详细讲解了如何判断系统的字节序(大端与小端)、符号扩展对字符类型的影响、以及溢出与补码运算在不同数据类型中的表现。此外,本文还探讨了无符号类型的回绕行为和字符数组在内存中的存储方式。通过这些实例,帮助读者理解数据如何在内存中存储和操作,为编写高效、稳定的C语言程序提供理论支持和实践指导。

2025-01-12 10:21:10 776

原创 C语言实现简易人机对战井字棋游戏

本博客详细介绍了如何使用C语言实现一个人机对战的井字棋游戏,包括项目的开发背景、设计思路、代码实现和功能解析。通过模块化编程思想,将整个项目分为头文件、核心功能实现和主程序控制三部分,逐步完成棋盘初始化、玩家与电脑的落子操作、游戏状态判断等功能。博客重点阐述了代码的编写顺序与逻辑结构,帮助读者理解如何从零开始构建一个完整的井字棋游戏,并提供了运行示例和优化方向,适合C语言初学者深入学习和实践。

2024-12-17 21:09:15 1035

原创 简单的二分查找算法实现与解析

通过本篇博客,我们学习了如何使用 C 语言实现一个二分查找算法。二分查找在已排序的数据集上能够高效地找到目标元素,时间复杂度仅为对数级别。二分查找是一种经典的搜索算法,通常用于查找一个有序数组中的元素。相比于线性查找,二分查找具有更高的效率,时间复杂度为 O(log n),因此在处理大数据量时非常有效。在每次比较时,都会将查找范围减半,因此查找的次数与数组的大小呈对数关系。这比起线性查找(O(n))效率要高得多,尤其在处理大数据时优势明显。设置为数组的最后一个下标,设置为数组的第一个下标。

2024-12-09 11:47:44 493

原创 C语言实现简单的猜数字游戏(含详细代码解析)

目录引言一、游戏功能介绍二、程序实现步骤1. 游戏菜单设计2. 随机数生成与游戏逻辑3. 主函数与整体控制三、程序运行效果1. 游戏菜单2. 游戏开始 3. 继续游戏或退出四、总结与优化五、完整代码 猜数字游戏是一种经典的游戏,玩家需要猜测计算机生成的数字。在这篇博客中,我将详细介绍如何使用 C 语言编写一个简单的猜数字游戏,解释代码的实现过程和关键技术细节,并分享一些可以改进的地方。希望这篇博客能帮助初学者理解 C 语言中的随机数生成、循环结构和输入输出控制。这个猜数字游戏的基本功能如下:下面我将按模块

2024-12-09 11:38:59 1260

空空如也

空空如也

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

TA关注的人

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