自定义博客皮肤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)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++ 哈希表封装 unordered_map 和 unordered_set

本文系统阐述了封装myunordered_map与myunordered_set的必要性,通过设计通用HashTable模板实现底层复用。核心思想是将数据结构、键提取、哈希函数与容器接口分离,支持链地址法哈希表,采用头插法处理冲突,通过KeyOfT和Hash仿函数适配不同场景。重点实现插入、查找、删除及动态扩容(rehash),强调负载因子控制与素数桶数优化。最后介绍迭代器设计,指出其需保存节点与哈希表指针,且在扩容后失效。整体体现“底层通用、上层适配”的高效设计原则。

2026-09-29 16:10:04 289 4

原创 C++ unordered_map 和 unordered_set 的使用与哈希表实现

unordered 系列容器(如 unordered_set、unordered_map)基于哈希表实现,平均增删查改复杂度为 O(1),不保证元素顺序;与红黑树实现的有序容器(如 set、map)相比,适合高频查找场景。使用时需注意键类型需支持哈希和相等比较,且应合理设置 reserve 避免频繁扩容。哈希冲突通过开放定址或链地址法处理,负载因子控制性能平衡。

2026-09-23 18:06:58 193

原创 手把手封装 C++ map 和 set:从红黑树到迭代器

本文手把手封装C++ map与set,核心思想是通过通用红黑树RBTree<K, T, KeyOfT>统一实现:set以K为键,map以pair<const K, V>为键,仅通过KeyOfT区分。重点讲解红黑树性质、插入修复逻辑(含三种形态)、节点设计及中序迭代器实现。迭代器支持++操作,通过父指针向上查找后继,确保有序遍历。最终通过模板特化实现map与set的接口封装,体现“底层共用、上层差异”的设计精髓。

2026-09-21 20:16:11 450 3

原创 C++ 红黑树深度剖析:原理、源码、面试全考点

红黑树是弱平衡二叉搜索树,通过颜色约束(5大性质)实现近似平衡,保证增删查时间复杂度为O(logN)。新节点默认红色以降低插入破坏性,仅可能违反“无连续红”规则,修复代价小。插入后分三种情况修复:叔叔红则变色上溯;叔叔黑且直线(LL/RR)则单旋+变色;折线(LR/RL)则双旋+变色。旋转需同步更新父指针,避免结构断裂。最终根节点强制置黑。相比AVL树,红黑树增删旋转开销更小,故STL的set/map采用红黑树。校验函数需确保无连续红、黑高一致、根为黑。中序遍历结果有序,与map迭代器一致。

2026-09-15 21:53:11 312 1

原创 C++ AVL 树深度剖析:平衡二叉搜索树原理、源码与面试考点

本文基于完整源码解析AVL树核心机制:通过平衡因子(右减左)实现自平衡,确保增删查稳定在O(logN)。重点剖析节点结构、插入流程、四种旋转(LL/RR/LR/RL)及平衡因子更新规则,强调父指针在回溯与旋转中的关键作用。结合校验函数IsBalanceTree验证正确性,对比红黑树揭示其删除效率低的短板,最终阐明AVL树严格平衡但实现复杂,而红黑树更适合作为工业标准。

2026-09-15 21:40:52 133

原创 C++ STL set 与 map 全套详解:关联式容器、红黑树底层、代码坑点、刷题实战

本文系统讲解STL中set/multiset/map/multimap的接口、底层红黑树原理及高频坑点,对比有序与无序容器性能差异,结合力扣例题剖析实际应用,涵盖迭代器特性、插入删除机制、区间操作与面试重点,全面掌握关联式容器核心知识。

2026-09-15 21:07:06 319

原创 C++ 二叉搜索树 (BST) 完整剖析:原理、源码、面试考点

本文系统讲解二叉搜索树(BST)的定义、性质及核心操作,涵盖key版与key-value版结构,详细剖析插入、查找、删除(含四种场景)逻辑,强调中序遍历升序特性与不可修改key的重要性。深入解析递归插入的指针引用机制、删除替换法原理、析构与拷贝构造的深拷贝实现,并结合实际应用(如词频统计、停车场计费)与面试高频题(验证BST、第k小元素),揭示其与STL set/map的关联及退化风险,最终引出平衡树(AVL、红黑树)的必要性,全面夯实数据结构基础。

2026-09-15 19:26:07 346

原创 深入 C++ 多态:从语法特性到底层虚表原理全解析

本文系统解析C++动态多态的核心原理,涵盖多态概念、实现条件、虚函数重写规则、默认参数陷阱、析构函数虚化、override/final关键字、重载/重写/隐藏区别、纯虚函数与抽象类,以及虚函数表与虚表指针的底层机制。重点剖析面试高频考点,揭示“虚函数动态绑定、默认参数静态绑定”等易错点,强调基类析构设为虚函数的必要性,并深入讲解多态的运行时绑定过程与性能开销,帮助开发者从语法到原理全面掌握面向对象设计精髓。

2026-09-15 18:16:02 284

原创 深入理解 C++ 继承:从基础语法到底层原理全解析

本文系统讲解C++继承核心知识点:继承本质是类级代码复用;三种继承方式与访问权限变化;对象切片与向上向下转换;同名隐藏与重载区别;构造析构顺序;友元与静态成员特性;菱形继承问题及虚继承底层原理(vbptr偏移量);多继承指针偏移;继承与组合选择;类模板继承需加类域限定。并总结高频面试考点,帮助读者吃透语法细节与底层原理。

2026-09-05 19:28:54 674 12

原创 深入 C++ STL:priority_queue 实现原理与模板进阶全解析

priority_queue是C++ STL中封装堆的容器适配器,默认基于vector实现大顶堆,通过仿函数自定义比较规则。核心操作push/pop为O(logn),批量建堆O(n)。底层涉及堆调整算法、仿函数及模板特化,解决指针等特殊类型比较。模板分离编译失败需声明定义同文件。理解其设计,能深入掌握泛型编程与STL精髓。

2026-09-05 00:34:03 358 5

原创 深入理解 C++ STL:stack、queue 与 deque 从使用到底层实现全解析

本文围绕 C++ STL 中 stack、queue 与 priority_queue 三类容器适配器展开,系统讲解其使用方法、接口特性,以及最小栈、栈序列判断、逆波兰表达式、二叉树层序遍历等经典算法场景。文章深入解析适配器设计模式的核心思想,重点剖析默认底层容器 deque 的分段连续存储结构、迭代器工作原理与性能特点,结合性能测试对比 vector 与 deque 的效率差异,阐释 stack 和 queue 选用 deque 作为默认底层的原因。文末梳理高频面试题,帮助读者全面掌握相关知识。

2026-09-05 00:04:33 506 2

原创 C++ list 深度解析:从使用原理到模拟实现

list 是带头结点的双向循环链表,插入删除 O(1),无法随机访问。其迭代器通过 Ref/Ptr 模板区分普通与 const 版本;注意 typename 语法陷阱。因节点零散,排序比 vector 慢,可拷入 vector 排序再拷回优化。splice/merge 仅改指针,效率极高。适合频繁插入删除、无需随机访问的场景。

2026-09-02 18:02:48 392 3

原创 C++ vector 深度剖析:从使用到底层模拟实现

本文深入解析C++ STL中的vector容器,从其基本使用到底层实现原理。首先介绍vector的多种构造方式、迭代器使用和空间管理(reserve/resize区别),重点分析1.5倍与2倍扩容机制在不同编译器下的差异。随后详细探讨迭代器失效问题及其解决方案,并对比C++11新增的emplace_back与push_back性能差异。在模拟实现部分,通过三指针模型展示vector的核心框架,剖析reserve实现中memcpy的陷阱,讲解拷贝交换惯用法等关键技术。

2026-08-13 19:35:38 411 9

原创 C++ 深度解析:模板、STL 与 string 类(含底层模拟实现代码)

本文系统介绍了C++模板与STL的核心概念与实践。首先分析了函数重载的局限性,引出模板机制的优势,详细讲解了函数模板和类模板的定义、推演原理及实例化方式。针对类模板的分离编译问题,提出了解决方案。随后概述了STL六大组件,并解析了C++11的auto和范围for语法糖。重点深入探讨了std::string的实现原理,包括VS的SSO优化和GCC的COW优化,通过模拟实现演示了深拷贝的现代写法及其异常安全性。最后通过算法案例展示了STL的实际应用,并提出了学习STL的三个境界:熟用、明理和扩展。

2026-08-06 14:25:41 495 10

原创 深入解析C++内存管理:从内存分布到底层原理与最佳实践

本文深入剖析了C/C++内存管理的核心要点,从内存分布、C语言动态内存管理到C++的new/delete机制,并探讨了现代C++的最佳实践。主要内容包括:1)进程内存五大分区(栈、堆、数据段等)及其存储内容;2)malloc/calloc/realloc的底层实现与使用陷阱;3)new/delete相比malloc/free的八大优势(类型安全、构造析构调用等);4)operator new底层原理和定位new表达式;5)现代C++内存管理规范(RAII原则、智能指针使用)。

2026-08-06 13:53:54 351 5

原创 C++ 类和对象(下):从构造函数到编译器优化

本文详细解析C++类和对象的核心知识点,通过Date类和Stack类示例代码全面剖析了构造函数(包括初始化列表、explicit关键字)、拷贝控制(拷贝构造、赋值运算符、析构函数)、运算符重载(比较/算术/流操作符等)、static成员、友元机制、内部类等核心概念。特别分析了深拷贝与浅拷贝、匿名对象生命周期、编译器优化策略(RVO/NRVO)等关键问题,并补充了C++11后的移动语义、default/delete等现代特性。

2026-07-30 12:07:51 363 9

原创 C++ 类和对象(中):深入解析 6 大默认成员函数与运算符重载

本文深入解析C++类中的默认成员函数,包括构造函数、析构函数、拷贝构造、赋值重载等6大核心函数(C++11后增至8个)。通过Date和Stack类的实现案例,详解了各函数的底层机制与使用场景:构造函数负责初始化,析构函数管理资源释放,拷贝构造实现对象复制(区分浅/深拷贝),赋值重载处理对象赋值。文章特别强调"三/五法则"——管理资源的类必须显式定义这些函数,并探讨了运算符重载、const成员等进阶特性,为编写健壮的C++类提供了完整指南。

2026-07-30 11:48:43 337 4

原创 数据结构排序算法全解析 —— 从原理到实现,一篇搞定

本文全面解析了C语言实现的八大排序算法:插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序和计数排序。通过图文并茂的方式详细阐述了各算法的原理、实现代码(均附可运行示例)、时间复杂度分析(从O(n²)到O(nlogn))及稳定性讨论。特别对比了不同算法的适用场景。文中还提供了10万量级的性能测试数据,直观展示各算法效率差异,并给出优化建议。最后总结了算法选择指南,强调排序作为算法基础的重要性,建议读者动手实践以加深理解。

2026-07-27 12:00:00 422 9

原创 数据结构进阶:手把手带你吃透二叉树(从入门到精通)

本文系统介绍了二叉树的核心知识体系,包括:1. 树与二叉树的基本概念与性质,如完全二叉树、满二叉树的定义及特征;2. 两种存储结构(顺序存储和链式存储)的实现方式及适用场景;3. 二叉树的递归遍历(前序、中序、后序)及非递归的层序遍历实现;4. 堆(顺序结构)的实现、堆排序和TOP-K问题;5. 链式二叉树的基本操作(结点统计、高度计算、查找等);6. 完全二叉树的判断方法。文章通过代码示例和图示讲解,适合作为数据结构的复习资料和面试准备材料。

2026-07-26 23:00:00 347 4

原创 数据结构与算法复杂度深度剖析:从理论推导到代码实战

本文深入解析了算法复杂度分析的核心概念与方法。首先阐述了数据结构与算法的重要性,指出复杂度(时间+空间)是衡量算法优劣的关键标准。重点讲解了时间复杂度的计算逻辑和大O表示法的三大法则(去低阶、去系数、常数变1),强调实际应用中应优先考虑最坏情况。同时剖析了空间复杂度的计算方式,特别提醒递归算法的空间消耗陷阱。文章通过冒泡排序和旋转数组案例对比不同解法,揭示时间复杂度相同但实际性能差异的现象。全文旨在帮助读者建立系统的算法效率评估思维。

2026-07-26 21:00:00 383 4

原创 51单片机智能家居系统:从零实现温湿度监测、蓝牙遥控与PWM风扇调速

这篇文章详细拆解了一个基于51单片机的智能家居原型项目,涵盖传感器数据采集、PWM调速、蓝牙遥控、OLED显示等功能模块。主要内容包括:1. 系统功能:温湿度检测、自动补光、风扇调速、远程灯光控制和数据监控 2. 硬件设计:详细列出元器件清单和引脚连接表 3. 软件架构:分层设计,包括主逻辑、外设驱动和通信协议 4. 核心模块解析:重点讲解串口通信、PWM调速、DHT11读取、OLED显示等实现原理 5. 调试技巧:提供常见问题排查方法和扩展改进方向。

2026-07-25 17:37:59 484 17

原创 51单片机电机控制全攻略:直流电机、舵机与步进电机

本文基于STC89C52单片机,详细讲解了三种常用电机(直流电机、舵机SG90和步进电机28BYJ-48)的控制原理与实现方法。文章首先介绍了PWM技术的基础知识及其在电机控制中的应用,随后分别阐述了三种电机的工作原理、驱动方案和具体代码实现。其中,直流电机通过PWM占空比调速,舵机通过PWM脉宽控制角度,步进电机则通过脉冲时序实现精确位移。文中提供了完整的硬件连接方案和可运行代码,并比较了三种电机的特性差异,为嵌入式系统开发中的电机控制提供了实用参考。

2026-07-25 16:18:21 571 10

原创 51单片机驱动DHT11温湿度传感器——单总线通信

DHT11是一款数字温湿度传感器,采用单总线通信协议。其硬件设计需外接5kΩ上拉电阻和100nF去耦电容。通信过程包括开始信号、40位数据传输和结束信号三个阶段,时序要求严格(如18ms起始信号、30μs位判断延时)。40位数据包含温湿度值和校验和,采样间隔需≥1秒。文章详细解析了51单片机的驱动实现,包括硬件连接、通信协议和代码设计,并提供了常见问题调试建议。项目采用模块化设计,整合了OLED显示功能,可作为嵌入式开发的参考案例。

2026-07-25 15:48:29 469 8

原创 51单片机驱动0.96寸OLED屏幕——从IIC协议到OLED移植完整指南

本文介绍了51单片机驱动0.96寸IIC接口OLED屏幕的完整过程。首先解析了OLED硬件连接要点,包括引脚定义、上拉电阻选择和SSD1306驱动芯片特性。然后深入讲解IIC协议原理,分析起始/停止信号、数据传输时序和SSD1306通信机制。接着从代码分层角度剖析了驱动实现:硬件层定义引脚,协议层实现IIC通信,驱动层完成初始化、显存控制和显示功能,应用层提供字符/汉字/图片显示接口。文章还介绍了取模软件使用方法,并给出常见问题解决方案。通过本教程,读者可全面掌握OLED驱动技术,为嵌入式显示开发奠定基础。

2026-06-17 23:37:22 807 23

原创 51单片机 + ESP8266 TCP通信实战:从零实现WiFi远程控制

本文为 STC89C52+ESP8266 TCP 通信实验教程,实现 WiFi 远程控单片机外设。介绍所需硬件与两类接线方法,强调共地、串口交叉、波特率匹配。讲解 ESP 三种 WiFi 模式、透传区别,演示修改波特率至 9600。解析 51 单片机串口驱动、AT 指令配网、中断解析 TCP 指令全套代码,梳理 TCP 收发流程。汇总串口乱码、WiFi/ TCP 连接失败等故障排查方案,提供状态机、防缓冲区溢出、断线重连等代码优化思路,适合物联网 WiFi 通信入门实操。

2026-06-16 22:01:02 1015 15

原创 51单片机串口通信完全指南:从原理到实战(发送、接收、回环与控制)

本文基于STC89C52单片机,系统讲解51单片机串口通信的实现方法。主要内容包括:1. 串口通信基础:介绍UART工作原理、电平标准(TTL/RS-232/RS-485)及数据帧格式;2. 硬件原理:解析51单片机串口内部结构及核心寄存器(SCON/PCON/TMOD)配置;3. 实战代码:详细讲解串口初始化、字节/字符串发送、中断接收处理及命令控制外设的实现;4. 硬件连接:提供USB转TTL、继电器模块、蓝牙模块的接线方案;5. 调试技巧:总结波特率设置、数据收发异常等常见问题解决方法。

2026-06-14 00:31:49 1090 26

原创 51单片机定时器/计数器中断详解(T0和T1)——从入门到精通

本文系统讲解了51单片机定时器中断的原理与编程方法,重点分析了T0和T1定时器的使用。主要内容包括:1.定时器优势:相比延时函数,硬件定时不占用CPU资源;2.核心寄存器:TMOD、TCON、IE及初值寄存器的配置方法;3.关键计算公式:详细推导了定时初值的计算方法,并以11.0592MHz晶振、10ms定时为例演示;4.完整编程步骤:从寄存器配置到中断服务函数编写,提供LED闪烁实例代码;5. 进阶应用:介绍了6T/12T模式、自动重装模式等扩展功能。通过本文可掌握51单片机定时中断的完整开发流程。

2026-06-10 22:52:41 1437 27

原创 51单片机外部中断超详细教程 —— 从寄存器配置到按键消抖,一篇全搞定

本文用“打游戏被水壶打断”生动类比51单片机外部中断机制,详细讲解了外部中断0/1的寄存器配置(TCON设置下降沿/低电平触发、IE开启两级中断)、中断向量表与优先级规则,以及中断响应流程(保存现场→执行ISR→恢复现场)。结合开发板电路,解释了P3.2/P3.3按键如何产生下降沿触发。文章还分析了按键抖动的危害,给出了软件消抖的优化代码,并提供了改变触发方式、设置中断优先级等实践建议。适合初学者系统掌握51外部中断。

2026-06-07 23:48:50 829 17

原创 51单片机入门:从点亮LED到检测按键,彻底搞懂引脚输入输出

本文详细讲解了51单片机(STC89C52/AT89S52)基础硬件与编程知识。主要内容包括:1. 最小系统构建(电源、时钟、复位电路);2. 寄存器原理与位操作(P1=0xFE、sbit定义);3. LED驱动电路设计(共阳/共阴接法、限流电阻计算);4. 按键消抖实现(硬件/软件方案);5. 光敏传感器接口与数字量读取。文章通过硬件图解配合完整代码(流水灯、按键控制、光敏检测等实例),阐述了IO口的拉/灌电流特性、输入输出配置要点及常见调试技巧,并提供了进阶练习建议。

2026-06-06 18:36:35 1102 29

原创 栈(Stack)详解:概念、实现与避坑指南

本文详细介绍了栈这一后进先出(LIFO)数据结构的概念与实现,主要内容包括: 栈的基本概念,通过叠盘子的生活实例解释LIFO原则; 栈的两种实现方式(数组和链表)对比,分析数组实现更优的原因; 使用C语言动态数组实现栈的核心代码,包括初始化、销毁、入栈、出栈等操作,重点说明扩容策略和内存管理; 常见应用场景和操作复杂度分析; 典型错误案例与避坑指南。文章通过完整代码示例和示意图,展示了如何高效实现一个健壮的栈结构。

2026-06-04 23:30:44 1315 39

原创 类和对象(上)—— 从入门到深入,一文搞懂C++类的核心概念

本文系统讲解了C++中类和对象的核心概念,包括:1. 类定义基本语法(class/struct区别、inline函数) 2. 访问限定符(public/protected/private)与封装原理 3. 类域特性及成员函数的类外定义方法 4. 实例化过程与对象内存布局(内存对齐规则) 5. this指针的底层机制及空指针调用问题 6. 对比C语言结构体实现,突出C++封装优势 文章通过代码示例和内存图示,解析了类成员存储方式、this指针隐式传递机制等关键知识点,并总结了常见编程陷阱。适合作为C++面向对

2026-06-03 23:51:47 948 30

原创 队列(Queue)完全指南:从原理到链式实现,手把手带你避坑

本文详细讲解了基于链式存储结构的队列实现(C语言),涵盖初始化、销毁、入队、出队、判空、取队头/队尾元素等核心操作。文章通过图形化表示和代码示例,重点分析了边界条件(如空队列、单节点情况)和常见陷阱(野指针、内存泄漏等)。特别强调了对单节点出队的特殊处理、队列大小的两种实现方式(遍历法vs维护size成员)及其性能取舍。最后提供了完整代码清单和扩展思考,帮助读者全面掌握链式队列的实现细节与优化方向。

2026-06-02 22:10:41 709 37

原创 双向链表(带头双向循环链表)超详细实现指南

本文详细介绍了带头双向循环链表的实现方法。双向链表每个节点包含前后指针,相比单链表操作更灵活。文章从节点结构定义开始,逐步讲解初始化、插入、删除、查找等核心操作,重点分析了指针修改顺序、内存管理等常见坑点,并提供了完整代码示例。特别强调了接口设计的一致性原则,推荐使用一级指针的接口风格。最后对比了顺序表和链表的优缺点,指出双向链表在频繁插入删除场景下的优势。理解指针连接和循环特性是掌握该数据结构的关键,建议通过画图辅助理解指针操作。

2026-06-01 20:03:02 697 31

原创 C++入门基础详解(从零开始掌握核心概念)

本文系统介绍了C++入门必备的十大核心知识点,包括: C++发展历程及各版本特性(C++98到C++26) 基础语法:命名空间解决命名冲突、输入输出流用法 函数特性:缺省参数、函数重载、内联函数 引用机制:变量别名、传参优势、与指针的区别 现代特性:nullptr替代NULL 文章通过丰富代码示例,对比C语言实现方式,帮助读者理解C++特性设计初衷,并给出了实际项目中的应用建议。适合零基础学习者或C语言转C++的开发者快速掌握核心概念,建立扎实的编程基础。

2026-05-31 23:02:19 1048 30

原创 贪吃蛇项目完全解析:从零打造一个 Windows 控制台贪吃蛇(附详细踩坑记录)

贪吃蛇代码详解

2026-05-27 23:43:16 851 10

原创 手把手带你实现通讯录项目:基于动态顺序表的完整指南

本文介绍了一个基于动态顺序表实现的C语言通讯录系统。该系统采用模块化设计,包含顺序表底层操作和通讯录功能实现两个模块,支持联系人的增删改查、数据展示及文件存储功能。文章详细讲解了动态顺序表的扩容机制、核心操作方法,以及如何将顺序表应用于通讯录开发。系统实现了数据持久化功能,通过二进制文件保存联系人信息,确保程序重启后数据不丢失。该项目不仅帮助学习者掌握动态数组的实现原理,还能理解结构体、文件操作等C语言核心知识,是初学者练习模块化编程和数据结构的优秀案例。

2026-05-21 23:46:01 710 2

原创 单链表超详细解析:从原理到实现,一文搞定所有坑!

本文详细讲解了C语言实现单链表的完整过程,包括节点定义、基本操作函数实现及常见错误分析。主要内容涵盖:1)单链表结构特点;2)关键函数实现(创建节点、插入删除、查找销毁等);3)边界条件处理;4)二级指针的必要性;5)指针操作顺序和内存管理要点。文章通过图示和代码示例,深入剖析了链表操作中的常见"坑",如野指针、内存泄漏等问题,并提供了完整的测试用例。特别强调了修改头指针必须使用二级指针,以及各种操作中指针链接顺序的重要性,是学习链表数据结构的实用指南。

2026-05-19 23:28:18 756 3

原创 C 语言实现海量数据 TopK 问题:小顶堆实战详解

本文介绍了使用小顶堆高效解决海量数据TopK问题的C语言实现。针对10万条随机整数数据,通过构建K个元素的小顶堆,仅需O(NlogK)时间复杂度和O(K)空间复杂度即可找出最大的前K个数字。核心思路是:先读取前K个数建堆,然后遍历剩余数据,比堆顶大的数替换堆顶并调整堆。相比全量排序,该方法显著降低了内存消耗和计算开销。文章详细解析了随机数据生成、堆调整、TopK筛选等关键步骤,并解释了为何使用小顶堆而非大顶堆。完整代码可直接编译运行,适用于日志统计、热门排行等实际场景。

2026-05-11 20:07:27 678 4

原创 实战代码解析:堆的实现与堆排序(C语言版)

本文通过完整C语言代码演示了堆的实现与堆排序算法。主要内容包括: 堆的结构体设计:使用动态数组实现完全二叉树,包含size和capacity字段管理内存。 核心操作实现: 向上调整(AdjustUp):插入元素时维护堆序 向下调整(AdjustDown):删除堆顶时重建堆序 基本操作:插入、删除、取堆顶等 堆排序算法: 分两步:原地建堆(O(n)) + 循环交换堆顶元素排序(O(nlogn)) 实现升序排列,空间复杂度O(1) 代码特点: 完整可运行,包含测试用例 详细注释说明关键算法 支持动态扩容和健壮性

2026-05-07 23:37:53 501 2

原创 C 语言深度解剖:数据在内存中如何存储?

本文深入解析C语言中数据存储的核心机制,涵盖整数存储(原码/反码/补码)、大小端字节序判断和浮点数IEEE754标准三大重点。详细阐述了补码的运算优势、大小端存储原理及检测方法,并通过典型面试题剖析整型转换和浮点存储的特殊规则。特别针对浮点数内存布局和整型溢出等易错点进行重点讲解,提供实用代码示例。掌握这些底层存储原理,可有效提升编程能力,应对技术面试中的内存相关问题。

2026-03-25 11:40:41 413 3

空空如也

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

TA关注的人

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