使用C++语言实现底层数据结构
所实现的数据结构,都使用模板功能实现泛型
个人邮箱:[email protected]
欢迎随时交流指导~
Array
--动态数组的实现
Stack-and-Queue
--以动态数组为底层结构,实现栈和队列
--队列设置虚拟头节点,使得对头节点的操作逻辑与其他节点相同
--同时实现了循环队列
LinkedList
--底层链表结构的实现
--同时以链表为底层结构,实现栈和队列
BST
--二分搜索树的实现
Set-and-Map
--分别以二分搜索树、链表为底层结构,实现集合和映射
--映射部分修改了原先所设计的BST和Linked类,使之支持映射,修改了原先代码中的部分bug
--加入文件读取单词方法,将单词中放入不同底层实现的集合和映射中,测量时间衡量性能
Heap-and-Priority-Queue
--以底层为动态数组实现了一个最大堆
--为Array加入了传入数组的拷贝功能
--以最大堆为底层结构,实现了优先队列
--main函数中使用生成随机数的方式对性能进行了测试
SegmentTree
--使用数组搭建了一个线段树
--实现了更新查询的功能
--可以传入函数改变线段树的功能
UnionFind
--底层数组实现并查集相关操作
--使用了rank优化以及路径压缩
Trie
--以N叉树为底层,使用map辅助实现字典树
--实现增查,并可以使用通配符.
AVLTree
--在原先BSTMAP的基础上实现了AVL的平衡树机制
--在增删时,可防止BST退化为链表,使得BST更加高效
--AVL树在查、改有优势
RBTree
--在原先BSTMAP的基础上实现了红黑树的平衡树机制
--仅在添加时维护了平衡,删除部分代码尚待完成
--RBTree在增、删有优势,更具统计优势,是STL中MAP、SET的底层实现
HashTable
--使用链地址法设计实现了哈希表
--支持根据哈希冲突规模动态增缩容
IndexMaxHeap
--实现了索引堆,支持change操作改变元素值,并同时维持堆的性质
--支持反向查找
UnweightedGraph
--底层实现无权图,两种表达方式:邻接矩阵和邻接表
--在图类中实现邻边迭代器
--实现了从txt文件中读图并初始化操作
--底层实现dfs算法,且使用dfs算法可实现求连通分量、两点是否连接以及点到点间的寻路操作
--底层实现bfs算法,且使用bfs算法实现无权图的最短路径查找
WeightedGraph
--底层实现有权图,两种表达方式:邻接矩阵和邻接表
--在图类中实现邻边迭代器
--实现了从txt文件中读图并初始化操作
--使用STL的优先队列,底层实现Lazy Prim算法,构建最小生成树
--使用先前实现的索引堆,底层实现Prim算法,构建最小生成树
--使用先前实现的并查集,底层实现Kruskal算法,构建最小生成树
--底层实现Dijkstra算法,寻找无负权边的图的最短路径
--底层实现BellmanFord算法,寻找有负权边,无负权图的最短路径