/DataStructure

简单数据结构实现

Primary LanguageC++

数据结构

来源:数据结构探险系列代码

贡献者:wnma3mz

欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。

目前,只在课程基础上用C++实现了一遍,并加入了堆和平衡二叉树的实现。欢迎提交完善C++版本和其他语言版本。若有疑问,欢迎提issus。

说明

C++在Linux下编译

  1. g++ *.cpp -o outfile
  2. ./outfile

Stack/

栈的实现

名字 功能
MyStack.h 实现了栈的数据结构,并且可拓展
MyStack.cpp 可以不需要编译,因为代码已经转移到了MyStack.h中,为了实现模板
Coordinate.h 实现坐标类,m_iXm_iY
demo.cpp 检验栈的实现
demo2.cpp 引入新的Coordinate.h实现栈
demo3.cpp 实现进制转换
demo4.cpp 实现符号匹配[(){}]

Queue/

队列的实现(环形队列)

名字 功能
MyQueue.h 实现了队列的数据结构,编译的时候需要使用MyQueue.cpp
Customer.h 实现顾客类,m_strNamem_iAge
demo.cpp 检验队列的实现
demo2.cpp 引入Customer.h实现队列

List/

线性表的实现(顺序表单向表

名字 功能
List.h 实现顺序表
List2.h 实现单链表
Node.h 实现List2.h中需要的Node类,Person类和Node类的指针
Person.h 使用Person类,有两个属性namephone
Coordinate.h 实现坐标类,同stack_demo/
demo.cpp 检验顺序表的实现
demo2.cpp 引入Coordinate.h实现顺序表
demo3.cpp 引入Node.h检验单链表的实现
demo4.cpp 引入Person.h实现单链表

Tree/

树的实现(二叉树数组和二叉树链表)

名字 功能
Tree.h 实现二叉树数组
Tree2.h 实现二叉树链表
Node.h 实现二叉树链表所需要的结点。index索引、data数值、Node *pLChild, *pRChild, *pParent左右孩子父结点
demo.cpp 检验二叉树数组的实现
demo2.cpp 检验二叉树链表的实现
BSTree.h 实现二叉查找树
demo3.cpp 检验二叉查找树的实现
AVLTree.h 平衡二叉树

Map/

图的实现

名字 功能
CMap.h 实现图
Edge.h 实现图所需要的边,nodeIndexAnodeIndexBweightValue,节点A、B的索引及对应边的权值
Node.h 实现图所需要的点,m_cData节点的值,m_bIsVisted改节点是否被访问过
demo.cpp 检验图的实现,深度优先遍历和广度优先遍历
demo2.cpp 检验最小生成树算法的实现,普利姆最小生成树和克鲁斯卡尔最小生成树
demo3.cpp 检验最短路径算法的实现,迪杰斯特拉最短路径和弗洛伊德最短路径

Heap/

堆的实现

名字 功能
Heap.cpp 最小堆排序