
数据结构的梗
osDetach
只有孜孜不倦地求索,才有源源不断的收获
展开
-
c++11实现红黑树
红黑树实现过程难度主要集中在删除节点上,考虑的情况比较多!下面是删除节点的再次总结!上次的总结了一部分,现在我将它补充完整!删除节点的后继节点是父亲节点的左子树:总共四种情况当删除节点的后继节点是父亲的右子树:下面是实现的运行的运行截图:插入的多组测试用例并打印层次遍历的红黑树插入后结果:删除节点测试:源代码欢迎star和fork哦~~~...原创 2019-12-15 20:42:03 · 432 阅读 · 0 评论 -
红黑树(插入和删除原理)
二叉查找树(BST)是一种父亲节点的值大于左孩子的值,而小于右孩子的值,查找效率是O(logn),但是在插入方面,可能在某些情况下使整个树退化成链表。所以为了进一步实现优化,有了红黑树的数据结构。红黑树的特点:(1)在父亲节点和子节点的关系上,和BST树是一致的。(2)每个节点都有颜色标示(3)根节点是黑色(4)叶子节点为NULL,也必须是黑色(5)如果一个节点是红色,则两个孩子节点是...原创 2019-12-08 14:54:13 · 489 阅读 · 0 评论 -
LevelDb源码之跳跃列表学习及C++11实现
跳跃列表是一种数据结构。他允许快速查询一个有序连续元素的数据链表。平均查找和插入的事件复杂度为O(log(n)),优于普通链表O(n)。快速查询是通过维护一个多层次的链表,并且每一层链表中的元素是前一层链表元素的子集。具体描述:在levelDb中跳跃列表每个节点的数据结构如下所示: template <typename Key, class Comparator> st...原创 2019-10-07 13:30:07 · 487 阅读 · 0 评论 -
数据结构课设总结
临近学期末,我们最后一个比较重要的任务就是做数据结构课设,我对于这戏课设还是比较重视的,因为这是对本学期我所学数据结构中算法一次的应用机会。本来想着挺难的,但做了之后吗,觉得没想像的那么难。做完之后就是一堆报告还有期末考,没机会总结。今天是放假第一天,我下午一点才起来,为了弥补内心的愧疚之感,做点事情吧!就总结下数据结构课设!我主要想总结的东西列在下面了。就照这个写吧!【1】必选建立哈夫...原创 2019-01-10 18:50:24 · 7444 阅读 · 2 评论 -
用c++创建一个最简单的哈希表(拉链法)
我们都知道,当我们要在一个集合中查找数据时,如果这个集合是顺序表且我们能确定要找的数据在顺序表中的位置的话,我们就能通过下标直接找到元素,这无非是我们要追求的最高效的查找策略!但是现实总是那么骨感,在大多数情况下,要在茫茫数据海洋中找某些关键信息,是不可能直接找到的。因为我们并不知道我们要找的数据与其所在位置之间是否存在某种关联。所以我们在存储数据时,建立如同顺序表形式的可以按照下标进行查...原创 2018-12-26 23:43:15 · 4746 阅读 · 0 评论 -
哈夫曼报文编码和译码(涨姿势!!!)
前面已经将基本的哈夫曼编码和哈夫曼译码方法结合一些简单的应用作了总结,了解详情,本有为这块也就这样了,没得玩了!最后发现自己有点Too Young!Too Simple!试着做了一个题,搞了大概一天吧!才搞出来!具体题目如下:已知某段通信报文内容,对该报文进行哈弗曼编码,并计算平均码长。(1)统计报文中各字符出现的频度。(字符集范围为52个英文字母,空格,英文句号。报文长度&amp;lt;=200)...原创 2018-11-30 20:14:07 · 2329 阅读 · 2 评论 -
哈夫曼编码和译码&&c++重点知识的应用
又是一个摸鱼天,啥都没学就写了个哈夫曼编码和译码。将以前学的c++相关知识系统的用了一遍,反正是能想到啥,啥方便就用啥,但是说回来,也没省多少事。反正比用c语言写跟简单一点。先看题目原型吧!假设某通信报文的字符集由A,B,C,D,E,F这6个字符组成,它们在报文中出现的频度(频度均为整数值)。(1)构造一棵哈弗曼树,依次给出各字符编码结果。(2)给字符串进行编码。(3)给编码串进行译码。...原创 2018-11-24 21:33:16 · 1196 阅读 · 0 评论 -
根据先序和中序(中序和后序)确定二叉树
实在是恨自己智商欠费,一个二叉树搞了好长时间才弄清!!!怎样通过先序和中序确定二叉树?我的算法设计思路参考学习网上的,但代码是自己实现的,其实还是在创建二叉树的基础上添加一些条件。我们刚开始根据先序序列中第一个数据,在中序序列中找与该结点数据相等的与元素,将中序序列中该元素所在下标返回。创建节点,将先序序列的第一个有效元素存起来。将中序序列中与前序序列当前第一个元素相等的元素所在位置置为’\0...原创 2018-11-08 13:48:47 · 12206 阅读 · 2 评论 -
线索化二叉树(附三种非递归方式遍历二叉树)
数据结构二叉树这快学的云里雾里,所以就写歌c++树的类来将这写东西全部封装起来,想用那个直接调用方法,我决免费将这个大类提供给大家,提供学习上的参考,少走弯路,由于代码比较多,我就将各方法的功能做了注释,如果那有什么不懂的,可以交流。线面就是源代码了~~~tree.h#ifndef _TREE_H#define _TREE_Hclass tree{public: tr...原创 2018-11-13 19:10:23 · 2453 阅读 · 0 评论 -
哈夫曼树这个梗!!!
哈夫曼树时数据结构中树这一部分比较重要的知识点,把学校放在mooc上的这一部分教学视频看了几遍,终于动手实现了。其实也不是很难,但我还是搞了老半天,才将代码中的bug修复,觉得操作的数据有点多,弄不好就乱了!!!哈夫曼树又称最优二叉树,给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权...原创 2018-11-10 14:04:55 · 396 阅读 · 0 评论 -
数据结构线性表之约瑟夫环&&多项式求和&&差&&积&&导数&&给变量赋值小练习
问题描述约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。数学上的一元多项式的表示是p(x) = p0 + p1 *...原创 2018-09-04 22:36:16 · 347 阅读 · 0 评论