该解决方案下有多个子项目,其中:
-
AlgorithmLearning 用于平时学习,包括oj的算法练习,以及一些未完成的算法或其它程序
-
主项目archives-algorithm 用于测试 DSAUtilityExtension 生成的Dll库和算法
- 测试概览(测试细节的完成情况请参考3中项前的待办; 括号内的内容表示测试用程序所在的文件名称)
- 数据结构测试
- 线性结构
- 树
- 图
- 进制转换测试
- 数学相关测试
- 大数相关测试
- 随机数发生器测试 (RadixTester)
- 数据结构测试
- 测试概览(测试细节的完成情况请参考3中项前的待办; 括号内的内容表示测试用程序所在的文件名称)
-
DSAUtilityExtension 是从项目1和2中提取出的相对稳定, 具有一定复用性的程序('*'号表示只实现了局部或是实现得不完善)
- 数据结构
- 线性结构
- 链接线性表
- 虚拟(VirtualList 使用数组作为虚拟内存构造链表)*
- 单向链接表
- 双向链接表(未实现)
- 顺序线性表(动态增长数组 PS 实现的比较简单)*
- 堆栈
- 链接堆栈
- 队列(Queue 接口)
- 链接队列(LinkedQueue)
- 双端队列(Deque)
- 优先队列(使用堆实现)*
- 多项式
- 链接线性表
- 查找结构(不包含搜索树)
- 跳表(未实现)*
- 并查集
- 树(一般情况下 子级表示继承关系)
- 二叉树
- 二叉搜索树
- AVL树
- Huffman树
- 数组式(没有继承关系)
- 树式(继承于二叉树)
- 表达式树(ExpressionTree)*
- 前缀
- 中缀
- 后缀
- 静态二叉树
- 静态二叉搜索树(虚继承了静态二叉树, 二叉搜索树; PS 这个实现有点欠妥)
- 完全静态二叉搜索树
- 堆
- 最大堆
- 最小堆
- 堆
- 二叉搜索树
- 二叉树
- 图(接口类; 无向 || 有向; 计权存边; 此外还有一个模板图 实现之后感觉没啥必要 完全可使用这个基本的替代)
- 邻接矩阵图(std::vector+std::vector)
- 邻接表图(std::vector+std::list)
- 坐标地图类(等权存点 4方向 || 8 方向 || 拓展方向)
- 线性结构
- 大数相关(基本都支持string直接或间接参与运算)
- 大数类*
- 无限制加法
- 无限制乘法
- int32范围减法
- int32范围除法
- 乘数int32范围阶乘
- 补码减法*
- 进制转换器类(Transition 无限制大小)
- 基于二进制的转换器
- 基于十进制的转换器
- 大数类*
- 其它
- Point相关
- Sub(下标)相关
- 三角形类
- 分数类
- 算法(参见拓展空间 文件名: ExtendSpace.h PS: 名称可能不怎么合适; 分类可能不准确甚至有错误; +表示需要测试用例)
- 标准拓展(StandardExtend)
- 略(与IO有关的函数/模板 和 其它辅助函数/模板)
- 实用拓展拓展(Utility)
- 二维数组列区间翻转
- 二维数组循环列移动+
- 最长递增子序列
- 排序
- 冒泡
- 选择
- 希尔
- 数学拓展(MathExtend)
- 辅助模板
- 向量加法模板
- 矩阵乘法模板
- 查找
- 二分查找模板(可使用STL替换 故功能较简陋)
- 三分法求一元函数的区间最小解
- 错排构建函数
- 大数整除判断函数
- 子串删除函数
- 数论
- 逆序数
- 进制相关的一些小算法(略)
- 快速阶乘
- 快速幂
- 任意底数对数
- 阶乘表构建
- 组合数
- 排列数
- 素数判断
- 真因子和
- 真因子和表构建
- 因子数目
- 开方函数(效率不如STL)
- 方差
- 卡塔兰数
- N边最大交点数计算函数
- 菲波纳契数表构建函数
- 欧几里德算法
- 拓展的欧几里德算法
- 线性方程的最小非负整数解求解函数
- 模逆元
- 中国剩余定理
- 欧拉函数
- 巴什博弈
- 背包算法
- 零壹过程
- 完全背包过程
- 多重背包过程 - 范围数字全排列 - 范围数字全排列(字典序) - 字符串匹配字符计数 - 回文字串判断(递归实现) - 括号匹配 - 杨辉三角构建函数
- 辅助模板
- 图论(此处算法实现于图接口中)
- DFS(回溯式)
- BFS
- 单源最短路径问题统一函数
- Dijkstra(无负权边的情况)
- SPFA
- 多源最短路问题统一函数
- FloydWarshall
- 拓扑排序
- 其它
- 随机数发生器
- 计算机可表示的有理数范围随机数
- 理数概率检测(有理数的分数形式做为参数)
- 支持类型
- unsigned
- int32
- double
- 回溯搜索
- 随机数发生器
- 标准拓展(StandardExtend)
- 数据结构
-
InterfaceForDotNet 是基于DSAUtilityExtension的 C# 接口
- 若在X64下改动了DSAUtilityExtension中的内容, 但未见效果, 可能是此时引用的仍是X86下内容的原因 这通常发生在一个既有x86又有x64的dll被一个只有x86的程序引用的时候, 此时即使配置显示的是x64, 但实际当前项目不一定 (参考AlgorithmLearning引用DSAUtilityExtension)
- 对于 模板; 结构体; 类 : #include"../../archives-algorithm/src/ExtendSpace.h" 是可行的
- 配置后 #include"./ExtendSpace.h"