Skip to content

RsrnlWysxr/Data_structures

Repository files navigation

Data_structures

使用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算法,寻找有负权边,无负权图的最短路径

About

使用C++语言实现底层数据结构

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages