
数据结构
文章平均质量分 77
bkspiderx
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++数据结构与算法高频编程题及实现
本文总结了C++中常见数据结构与算法的高频编程题及实现方法,主要包括: 数组操作:二分查找(基础及变种)、滑动窗口算法,时间复杂度O(log n)和O(n); 链表操作:反转链表、检测环、合并有序链表、找中间节点等,使用快慢指针等技巧; 栈与队列:栈实现队列、括号匹配验证等; 树结构:二叉树遍历(递归和非递归实现)。 每种数据结构都给出了核心操作的标准实现代码,并分析了时间复杂度和适用场景。这些算法涵盖了面试和实际开发中的高频问题,是C++程序员必备的基础知识。原创 2025-08-20 09:07:20 · 406 阅读 · 0 评论 -
C++ 是技术面试中的高频考察测点(基础知识)
本文系统梳理了C++面试中的核心知识点,涵盖语法基础、面向对象、内存管理和STL等关键领域。重点解析了const、指针与引用、static等关键字的用法,详细对比了函数重载与重写、new/delete与malloc/free等概念的差异。面向对象部分深入探讨了多态实现、虚函数机制和继承问题解决方案。内存管理章节强调了智能指针的正确使用和内存泄漏防范。STL部分对比了不同容器的底层实现与适用场景。最后介绍了C++11的移动语义等新特性,为面试者提供全面的知识体系梳理和技术要点提炼。原创 2025-08-18 11:18:23 · 865 阅读 · 0 评论 -
C++链表操作及常见面试题解析
本文介绍了C++中链表的基本操作和常见面试题。首先讲解了链表节点定义和创建、打印、插入、删除、反转等基础操作,并给出了完整代码示例。然后重点解析了链表相关的常见面试题,包括环检测、双指针技巧(寻找中间节点和倒数第k个节点)等。文章通过清晰的代码实现,帮助读者掌握链表的核心操作和解题思路,为面试和实际编程提供实用参考。原创 2025-08-18 11:17:47 · 435 阅读 · 0 评论 -
线程安全的自定义内存分配器(my_malloc 与 my_free)实现
摘要 本文实现了一个基于标准库malloc/free的线程安全内存分配器,保留了自定义分配器的核心功能。主要特点包括:1) 底层使用标准库进行实际内存管理,简化系统交互;2) 维护双向链表结构以跟踪空闲块,实现内存复用和碎片合并;3) 通过互斥锁保证多线程安全;4) 支持8字节内存对齐。关键功能包括:my_malloc函数优先复用空闲块,不足时调用malloc;my_free函数释放内存到空闲链表并进行相邻块合并。该实现既保持了自定义分配器的控制能力,又降低了直接操作系统内存的复杂性。原创 2025-08-15 09:17:51 · 729 阅读 · 0 评论 -
C++ 内存分配跟踪与类对象内存管理方案
本文介绍了一种C++内存分配跟踪与类对象内存管理方案,通过重写全局new/delete运算符实现内存泄漏检测。方案采用单例模式的MemoryTracker类,使用哈希表记录所有动态内存分配信息(地址、大小、文件、行号),并通过互斥锁保证线程安全。重载的运算符在分配时调用malloc并记录,释放时验证指针有效性并移除记录。程序退出时自动检查未释放内存,输出详细泄漏信息。该方案支持类对象的内存跟踪,通过分离内存分配与对象构造机制,确保对类实例的new/delete操作也能被准确记录。测试示例验证了基础类对象和继原创 2025-08-15 09:15:50 · 655 阅读 · 0 评论 -
基于标准库malloc/free的内存泄漏检测方案及宏替换原理
本文介绍了一种基于标准库的内存泄漏检测方案。该方案通过封装malloc/free函数,记录内存分配信息(地址、大小、位置),在程序退出时自动生成泄漏报告。核心实现包括:1)使用宏替换将标准函数映射到跟踪版本;2)通过链表记录所有分配的内存块;3)采用线程安全机制和递归调用防护。方案特别解决了宏替换导致的递归调用问题,通过#undef临时取消宏定义来调用标准库函数。该方案无需修改业务代码,兼容性强,适用于所有C语言环境。原创 2025-08-15 09:14:59 · 675 阅读 · 0 评论 -
简单的双向循环链表实现与使用指南
CnLinkedList是一个高效的双向循环链表实现,采用自包含节点设计,无需额外管理对象。其核心功能包括:1) 构造函数初始化自循环;2) O(1)复杂度的节点插入(InsertPrev/Next)和删除(RemovePrev/Next)操作;3) 节点自脱离方法(RemoveFromLinkedList);4) 链表长度计算(LinkedListSize)。通过继承CnLinkedList并添加数据字段,可创建带数据的链表节点。典型使用场景包括需要频繁插入/删除操作的场景,其内存紧凑且操作高效,通过维护原创 2025-08-12 17:23:04 · 394 阅读 · 0 评论