Skip to content

使用c++模板技术实现的一个“数据结构”库,实现了链表、栈、队列、树、图等。

Notifications You must be signed in to change notification settings

quanqixian/QLib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QWorkShop

1.QLib库概述

使用c++模板技术实现的一个“数据结构”库,实现了链表、栈、队列、树、图等。

2.QLib库包含的内容

  • 顶层父类-保证单一继承树和规范动态内存申请行为
  • 异常类族-使用异常处理机制分离正常逻辑和异常逻辑
  • 智能指针类-用于规避多重释放和内存泄漏的Bug
  • 静态顺序表、动态顺序表的实现、仿STL的顺序表迭代器实现、数组类的设计与实现
  • 单链表、静态单链表、双向链表、循环链表、基于Linux内核链表的双向循环链表类的实现
  • 创建栈类族,包含顺序栈和链式栈存储结构类,有栈创建、销毁、清空、进栈、出栈、栈顶元素获取、栈大小
  • 创建队列类族,包含顺序队列和链式队列存储结构类,有队列创建,销毁、清空、进队、出队、获取队头、队列长度、判断队列是否为空,以及栈与队列的相互转换
  • 创建字符串类族、重载实现其比较、加法、赋值、插入、判断、去空等操作
  • KMP算法、递归思想的应用实现链表反转、排序合并、八皇后问题
  • 排序类的实现,选择排序、插入排序、冒泡排序,希尔排序归并排序、快速排序等排序算法的实现
  • 通用树类的实现,实现了树的查找、插入、清除、删除、结点数/高度/度的获取、树的层次遍历等操作
  • 二叉树类的实现,实现了树的查找.插入.清除、删除、结点数/高度/度的获取、树的层次遍历和典型遍历、克隆、比较、相加、线索化等操作
  • 图的邻接矩阵和邻接链表存储实现,图的深度优先/广度优先遍历、最小生成树、最短路径算法的实现
  • 基于RAII机制的QMutex和QMutexLocker、仿Qt的线程类QThread

3.详细的说明文档

QLib中各个类的继承关系如下图:

uml

docs目录下存放了每个类的设计说明文档:

4.单元测试

QLib使用第三方库googletest进行了各个类的单元测试:

5.编译单元测试

5.1编译第三方库和所有单元测试

在QLib目录下执执行下面的编译命令,将编译第三方库和所有单元测试

make

5.2执行单元测试

make runTest

5.3生成单元测试通过率报告和代码覆盖率报告(html格式)

make report

About

使用c++模板技术实现的一个“数据结构”库,实现了链表、栈、队列、树、图等。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published