来源:数据结构探险系列代码
贡献者:wnma3mz
欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。
目前,只在课程基础上用C++实现了一遍,并加入了堆和平衡二叉树的实现。欢迎提交完善C++版本和其他语言版本。若有疑问,欢迎提issus。
C++在Linux下编译
g++ *.cpp -o outfile
./outfile
栈的实现
名字 | 功能 |
---|---|
MyStack.h |
实现了栈的数据结构,并且可拓展 |
MyStack.cpp |
可以不需要编译,因为代码已经转移到了MyStack.h 中,为了实现模板 |
Coordinate.h |
实现坐标类,m_iX 和m_iY |
demo.cpp |
检验栈的实现 |
demo2.cpp |
引入新的Coordinate.h 实现栈 |
demo3.cpp |
实现进制转换 |
demo4.cpp |
实现符号匹配[(){}] |
队列的实现(环形队列)
名字 | 功能 |
---|---|
MyQueue.h |
实现了队列的数据结构,编译的时候需要使用MyQueue.cpp |
Customer.h |
实现顾客类,m_strName 和m_iAge |
demo.cpp |
检验队列的实现 |
demo2.cpp |
引入Customer.h 实现队列 |
线性表的实现(顺序表和单向表)
名字 | 功能 |
---|---|
List.h |
实现顺序表 |
List2.h |
实现单链表 |
Node.h |
实现List2.h 中需要的Node 类,Person 类和Node 类的指针 |
Person.h |
使用Person 类,有两个属性name 和phone |
Coordinate.h |
实现坐标类,同stack_demo/ |
demo.cpp |
检验顺序表的实现 |
demo2.cpp |
引入Coordinate.h 实现顺序表 |
demo3.cpp |
引入Node.h 检验单链表的实现 |
demo4.cpp |
引入Person.h 实现单链表 |
树的实现(二叉树数组和二叉树链表)
名字 | 功能 |
---|---|
Tree.h |
实现二叉树数组 |
Tree2.h |
实现二叉树链表 |
Node.h |
实现二叉树链表所需要的结点。index 索引、data 数值、Node *pLChild, *pRChild, *pParent 左右孩子父结点 |
demo.cpp |
检验二叉树数组的实现 |
demo2.cpp |
检验二叉树链表的实现 |
BSTree.h |
实现二叉查找树 |
demo3.cpp |
检验二叉查找树的实现 |
AVLTree.h |
平衡二叉树 |
图的实现
名字 | 功能 |
---|---|
CMap.h |
实现图 |
Edge.h |
实现图所需要的边,nodeIndexA ,nodeIndexB ,weightValue ,节点A、B的索引及对应边的权值 |
Node.h |
实现图所需要的点,m_cData 节点的值,m_bIsVisted 改节点是否被访问过 |
demo.cpp |
检验图的实现,深度优先遍历和广度优先遍历 |
demo2.cpp |
检验最小生成树算法的实现,普利姆最小生成树和克鲁斯卡尔最小生成树 |
demo3.cpp |
检验最短路径算法的实现,迪杰斯特拉最短路径和弗洛伊德最短路径 |
堆的实现
名字 | 功能 |
---|---|
Heap.cpp |
最小堆排序 |