-
使用c++模板技术实现的一个“数据结构”库,实现了链表、栈、队列、树、图等
-
使用gtest编写单元测试,并且支持代码覆盖率报告生成
- 顶层父类-保证单一继承树和规范动态内存申请行为
- 异常类族-使用异常处理机制分离正常逻辑和异常逻辑
- 智能指针类-实现独占智能指针和共享智能指针,防止多重释放和内存泄漏,支持指定删除器
- 静态顺序表、动态顺序表的实现、仿STL的顺序表迭代器实现、静态数组、动态数组类的设计与实现
- 单链表、静态单链表、双向链表、循环链表、基于Linux内核链表的双向循环链表类的实现
- 顺序栈、链式栈、顺序队列、链式队列的实现
- 创建字符串类、重载实现其比较、加法、赋值、插入、判断、去空等操作
- 排序类的实现,选择排序、插入排序、冒泡排序,希尔排序归并排序、快速排序等排序算法的实现
- 通用树类的实现,实现了树的查找、插入、清除、删除、结点数/高度/度的获取、树的层次遍历等操作
- 二叉树类的实现,实现了树的查找.插入.清除、删除、结点数/高度/度的获取、树的层次遍历和典型遍历、克隆、比较、相加、线索化等操作
- 图的邻接矩阵和邻接链表存储实现,图的深度优先/广度优先遍历、最小生成树、最短路径算法的实现
- 基于RAII机制的QMutex和QMutexLocker、仿Qt的线程类QThread
QLib中各个类的继承关系如下图:
在docs目录下存放了每个类的设计说明文档:
- 01.顶层父类Object的创建
- 02.异常类的设计与实现
- 03-1.智能指针的设计与实现1-SmartPointer
- 03-2.智能指针的设计与实现2-SharedPointer
- 04-1.线性表的抽象实现
- 04-2.顺序表的抽象实现
- 04-3.静态顺序表和动态顺序表的实现
- 05.数组类的设计与实现
- 06-1.单链表的设计与实现
- 06-2.线性表find函数的添加
- 06-3.单链表的遍历与优化
- 06-4.静态单链表的设计与实现
- 07-1.顺序栈的设计与实现
- 07-2.链式栈的设计与实现
- 08-1.顺序队列的设计与实现
- 08-2.链式队列的设计与实现
- 基于RAII机制的QMutex和QMutexLocker设计与实现
- 仿Qt的线程类QThread设计与实现
QLib使用第三方库googletest进行了各个类的单元测试:
- 顶层父类Object单元测试
- 异常类族单元测试
- 智能指针-SmartPointer单元测试
- 智能指针-SharedPointer单元测试
- 顺序表-StaticList单元测试
- 顺序表-DynamicList单元测试
- 数组类-StaticArray单元测试
- 数组类-DynamicArray单元测试
- 链表-单链表LinkList单元测试
- 链表-静态单链表StaticLinkList单元测试
- 链表-循环单链表CircleList单元测试
- 链表-双向链表DualLinkList单元测试
- 链表-linux内核链表单元测试
- 栈-顺序栈StaticStack单元测试
- 栈-链式栈LinkStack单元测试
- 队列-顺序队列StaticQueue单元测试
- 队列-链式队列LinkQueue单元测试
- 排序类-Sort单元测试
- 图-邻接矩阵图MatrixGraph单元测试
- 图-邻接链表图ListGraph单元测试
- 线程类QThread单元测试
在QLib目录下执执行下面的编译命令,将编译第三方库和所有单元测试
make
make runTest
make report
持续更新中,期待您的交流与讨论