摘要: #include "BinTree.hpp" //优先级队列PQ模板类 template struct PQ{ virtual void insert(T) = 0; //按照比较器确定的优先级次序插入词条 virtual T getMax() = 0; //取出优先级最高的词条 virtual T delMax() = 0; //删除优先级最高的词条 }; //左... 阅读全文
posted @ 2018-11-11 21:51 迷心迷 阅读(159) 评论(0) 推荐(0) 编辑
摘要: #include "Vector.hpp" //优先级队列PQ模板类 template struct PQ{ virtual void insert(T) = 0; //按照比较器确定的优先级次序插入词条 virtual T getMax() = 0; //取出优先级最高的词条 virtual T delMax() = 0; //删除优先级最高的词条 }; #d... 阅读全文
posted @ 2018-11-11 21:50 迷心迷 阅读(162) 评论(0) 推荐(0) 编辑
摘要: /* 由红黑两色节点组成的二叉搜索树若满足以下条件,即为"红黑树(red-black tree)" (1)树根始终为黑色 (2)外部节点均为黑色 (3)其余节点若为红色,则其孩子节点必为黑色 (4)从任一外部节点到根节点的沿途,黑节点的数目相等 */ #include "BST.hpp" template class RedBlack : public BST { prote... 阅读全文
posted @ 2018-11-11 21:49 迷心迷 阅读(204) 评论(0) 推荐(0) 编辑
摘要: #include "Vector.hpp" #define BTNodePosi(T) BTNode* //B-树节点位置 //B-树节点模版类 template struct BTNode{ BTNodePosi(T) parent; //父节点 Vector key; //关键码向量 Vector child; //孩子向量(其长度总比key多一) ... 阅读全文
posted @ 2018-11-11 21:48 迷心迷 阅读(172) 评论(0) 推荐(0) 编辑
摘要: #include "BST.hpp" //伸展树 template class Splay : public BST { protected: BinNodePosi(T) splay(BinNodePosi(T) v); //将节点伸展至根 public: BinNodePosi(T) & search(const T& e) override; //查找 BinN... 阅读全文
posted @ 2018-11-11 21:47 迷心迷 阅读(195) 评论(0) 推荐(0) 编辑
摘要: #include "BinTree.hpp" //二叉搜索树 //任何一个二叉树是二叉搜索树,当且仅当其中序遍历序列单调非降 //词条模版类 template struct Entry { K key; V value; Entry(K k = K(), V v = V()) : key(k), value(v) {} Entry(Entr... 阅读全文
posted @ 2018-11-11 21:46 迷心迷 阅读(127) 评论(0) 推荐(0) 编辑
摘要: #include "BST.hpp" /* 任一节点v的平衡因子(balance factor)定义为"其左右子树的高度差",即 balFac(v) = height(lc(v)) - height(rc(c)) 本书中空树高度取-1,单节点子树(叶节点)高度取0 所谓AVL树,即平衡因子受限的二叉搜索树----其中各节点平衡因子的绝对值均不超过1 */ template... 阅读全文
posted @ 2018-11-11 21:46 迷心迷 阅读(138) 评论(0) 推荐(0) 编辑
摘要: #include "Stack.hpp" #include "Queue.hpp" typedef enum { UNDISCOVERED, DISCOVERED, VISITED }VStatus; //顶点状态 typedef enum { UNDETERMINED, TREE, CROSS, FORWARD, BACK... 阅读全文
posted @ 2018-11-11 21:45 迷心迷 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 节点 BinNode.h BinTree.h 阅读全文
posted @ 2018-11-11 21:44 迷心迷 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 队列可以基于前面的List实现 阅读全文
posted @ 2018-11-11 21:42 迷心迷 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 栈的特点时,先进后出 可以基于前面的向量实现 Stack.h 阅读全文
posted @ 2018-11-11 21:41 迷心迷 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 列表也是一组元素的集合。 特点是:增删快,查找慢。 列表和向量的区别是向量的元素都是在内存中连续存储,列表则不能保证元素在内存中是否连续存储。 元素节点 ListNode.h ListNode.cpp 列表ADT List.h List.cpp 阅读全文
posted @ 2018-11-11 21:39 迷心迷 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 向量是具有线性次序的一组元素构成的集合。 特点:查找快,增删慢。 头文件vector.h 实现文件Vector.cpp 阅读全文
posted @ 2018-11-11 21:34 迷心迷 阅读(296) 评论(0) 推荐(0) 编辑
摘要: Abstract Data Type vs. Data Structrue 抽象数据类型=数据模型+定义在该模型上的一组操作。 interface 数据结构=基于某种特定语言,实现ADT的一整套算法。 implementation 阅读全文
posted @ 2018-11-11 20:46 迷心迷 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 1、复杂度分析的主要方法 1)迭代:技术求和 2)递归: 递归跟踪+递推方程 3)猜测+验证 2、常见复杂度 1)算数级数: 与末项平方同阶 T(n) = 1+2+3+……+n = n(n+1)/2 = ο(n2) 2)幂方级数 : 比幂次高出一阶 T2(n) = 12 + 22 + 32 + …… 阅读全文
posted @ 2018-11-11 15:16 迷心迷 阅读(352) 评论(0) 推荐(0) 编辑