数据结构
数据结构
dos diosas
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
021.实现trie树
import java.util.TreeMap;public class Trie {//注意Trie只能存储字符串 private class Node{ public boolean isWord; public TreeMap<Character,Node>next;//父节点与子节点是通过映射来实现的,这是为了更好地扩充 public Node(boolean isWord){ this.isWor.原创 2020-06-28 14:20:41 · 128 阅读 · 0 评论 -
020.HashTable
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。  ...原创 2020-04-21 00:13:23 · 148 阅读 · 0 评论 -
019.堆
这里借助此前业已实现的Vector数据结构来实现一个最大堆,可以看到这里大量的使用了宏,目的是使得后面的操作更加的简明,这样一来在读这段代码的时候就不会一味的拘泥于某些子功能的实现逻辑,而将目光转向实际的算法当中去。(当然这里的代码实现也是参考清华大学邓俊辉教授的教材,值得注意的是如果完全按照示例代码包的实现方式,不仅是的这段代码晦涩难懂,就算是在测试的过程中也是一头雾水,所以在这里我采取了这种的...原创 2020-04-17 22:59:24 · 949 阅读 · 0 评论 -
018.Red-Black Tree
这里给出一种平衡二叉搜索树红黑树的实现,代码参考并整理自清华大学邓俊辉《数据结构C++版》。红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J. Guibas和Robert...原创 2020-04-28 18:05:50 · 351 阅读 · 0 评论 -
017.B树
根据 Knuth 的定义,一个 m 阶的B树是一个有以下属性的树: 每一个节点最多有 m 个子节点  ...原创 2020-04-20 14:40:28 · 208 阅读 · 0 评论 -
016.Splay Tree
下面介绍一种二叉平衡搜索树 Splay树 伸展树(英语:Splay Tree)是一种能够自我平衡的二叉查找树,它能在均摊O(logn)的时间内完成基于伸展(Splay)操作的插入、查找、修改和删除操作。它是由丹尼尔·斯立特(Daniel Sleator)和罗伯特·塔扬在1985年发明的。 ...原创 2020-04-19 19:28:34 · 353 阅读 · 0 评论 -
015.AVL Tree
本文给出了AVL平衡二叉树的一种实现方式,其主要实现过程参考自清华大学 邓俊辉《数据结构C++语言版》,这段代码的实现特点是利用了 3+4 重构算法使得删除与插入操作的平衡维护的逻辑更加简洁明了。 有关于AVL Tree的介绍,这...原创 2020-04-18 20:13:44 · 246 阅读 · 0 评论 -
014.BST
本文给出二叉搜索树的C++实现,在一部分教材中二叉搜索树又称二叉排序树,这种树结构存在多种变种,比如BBST,AVLTree,RBTree,等,其作用是对一系列数据进行合理的布局使得按照中序遍历出来的结果序列是按照关键码值升序排列,从而使得对某一个元素的访问效率尽可能的接近对数时间复杂度,但是就本文所提及的简单BST而言,并没有对任一节点进行左右子树平衡化处理,所以在某些极端的情况下BST就退化为...原创 2020-04-17 13:46:25 · 219 阅读 · 0 评论 -
013.并查集:实现方式⑥(基于递归的路径压缩)
#include<iostream>#include<cassert>#include<ctime>using namespace std;class UnionFind{private: int* parent; int* rank;//rank[i]表示以i为根节点的集合所表示的数的层数 int count;public: Unio...原创 2020-04-16 14:29:37 · 215 阅读 · 0 评论 -
012.并查集:实现方式⑤
#include<iostream>#include<cassert>#include<ctime>using namespace std;class UnionFind{private: int* parent; int* rank;//rank[i]表示以i为根节点的集合所表示的数的层数 int count;public: Unio...原创 2020-04-16 14:26:46 · 122 阅读 · 0 评论 -
011.并查集:实现方式④
#include<iostream>#include<cassert>#include<ctime>using namespace std;class UnionFind{private: int* parent; int* rank;//rank[i]表示以i为根节点的集合所表示的数的层数 int count;public: Unio...原创 2020-04-16 14:13:18 · 129 阅读 · 0 评论 -
010.并查集:实现方式③
#include<iostream>#include<cassert>#include<ctime>using namespace std;class UnionFind{private: int* parent; int* sz;//sz[i]表示以i为根节点的元素个数 int count;public: UnionFind(int ...原创 2020-04-16 13:50:25 · 198 阅读 · 0 评论 -
009.并查集:实现方式②
#include<iostream>#include<cassert>#include<ctime>using namespace std;class UnionFind{private: int* parent; int count;public: UnionFind(int n) { count = n; parent = ...原创 2020-04-16 13:36:47 · 141 阅读 · 0 评论 -
008.并查集:实现方式①
为了日后介绍图论算法的方便这里给出几种并查集算法的实现方式,然而,这样的实现方式并不具有一般性,这里不过是为了后面做一些铺垫罢了。#include<iostream>#include<cassert>#include<ctime>using namespace std;class UnionFind{private: int* id; in...原创 2020-04-16 13:15:53 · 216 阅读 · 0 评论 -
007.Binary Tree
本文给出基于C++完成的二叉树模板类以及它的测试主函数,主要具有二叉树的四种遍历算法的递归与非递归实现,同样,为了不重复造轮子,BinTree模板类给出了可以用来继承的多种接口,用来对日后实现红黑树,AVL,Trie树等数据结构的实现起到辅助作用,代码中大量使用宏,使得在主要的算法里面对函数的复杂调用得以简化,并且在实际执行的...原创 2020-04-14 20:14:27 · 296 阅读 · 0 评论 -
006.Bitmap
援引自维基百科: A bit array (also known as bit map, bit set, bit string, or bit vector) is an array data structure that compactly stores bits. It can be used to implement a simple set da...原创 2020-04-13 13:21:14 · 294 阅读 · 0 评论 -
005.Queue:(利用链表实现)
与之前所发的博客类似,这里参照清华大学教授邓俊辉所编写的《数据结构》一书给出链式队列的实现,其中的具体步骤的解释从略,关于头文件List.h,可以参考之前所发的博客链表#include"List.h"using namespace std;template<typename T>class ...原创 2020-04-14 12:45:26 · 144 阅读 · 0 评论 -
004.Stack(利用链表实现)
基于上一次业已实现的链表数据结构,这里贴出基于其实现的Stack数据结构,供大家学习参考交流。#pragma once#include"List.h"//以向量类,派生出模板类template <typename T> class Stack : public List<T> { //将列表的首/末端作为栈顶/底 public: //size()、empt...原创 2020-04-11 23:09:36 · 189 阅读 · 0 评论 -
003.Stack(利用向量实现)
自己最近在学习清华大学邓俊辉教授的数据结构课程,不得不赞叹,邓老师出色的授课技巧,以及前人业已设计好的一系列算法和设计模式,使得我们解决问题的时候有如神助。在这里,我将数据结构Stack的实现过程贴出来,并在下面附上在编写代码的过程中遇到的问题。#pragma once#include"Vector.h"//以向量类,派生出模板类template <typename T> ...原创 2020-04-11 22:49:32 · 244 阅读 · 1 评论 -
002.List
本文贴出邓俊辉教授所编写教材《数据结构C++版》的列表一部分的全部实现代码,供大家参考,交流学习。#include<iostream>#include<algorithm>#include<functional>#include<cstdlib>#include<ctime>using namespace std;typ...原创 2020-04-11 17:36:29 · 295 阅读 · 0 评论 -
001.Vector
这是我第一次撰写博客,用以记录学习 清华大学邓俊辉教授编写的《数据结构C++版》一书中的代码,以及调试过程,这里要注意的是,由于我并没有那么多的时间来细细的讲解每一段代码的含义所以你能够看到的只有代码,不过邓俊辉老师的教材上都有写明每一段的来历以及原理。话不多说,直接上代码。#include<iostream>#include<algorithm>...原创 2020-04-10 21:40:27 · 312 阅读 · 0 评论
分享