数据结构
文章平均质量分 85
就是爱编程-都有人重名
编程如水似空气般不可缺失
展开
-
位图和布隆过滤器以及哈希切分
今天分享一下,有关于位图和布隆过滤器以及哈希切分的相关问题。位图简单来说就是以一个bit位来表示一个整形数字存在或者不存在,它适用于在大数据中简单查找确定一个整形数字是否存在?其实位图与哈希表的直接定值法的原理是一致的,哈希表的定值是一个具体的类型,而位图定值到一个bit上,用该bit位上的0或1来表示某个整形数字存在或者不存在。like that.位图代码原创 2017-04-26 17:39:39 · 1055 阅读 · 0 评论 -
两栈一队列和两队列一栈——题集(五)
两栈一队列和两队列一栈——题集(五) 今天分享一下,用两队列实现一个栈和用两个栈实现一个队列,顺便稍微说说字符串替换。 用两队列实现一个栈的源代码和运行界面:原代码如下:#includeusing namespace std;#include //用两队列实现一个栈和用两个栈实现一个队列templateclass Stack{public:原创 2017-07-19 21:31:02 · 311 阅读 · 0 评论 -
实现循环右移和删除小写字母字符串中重复字符——题集(二十)
实现循环右移和删除小写字母字符串中重复字符——题集(二十) 今天分享一下实现循环右移和删除小写字母字符串中重复字符的源代码和测试用例。 实现循环右移的源代码和运行示例。 将N个字符的数组,循环右移K位。时间复杂度O(N)。源代码如下:#includeusing namespace std;//实现循环右移void RotateRight原创 2017-08-06 15:00:47 · 776 阅读 · 3 评论 -
实现冒泡排序的和快速排序的递归和非递归版——题集(十七)
实现冒泡排序的和快速排序的递归和非递归版——题集(十七)今天分享一下实现冒泡排序的和快速排序的递归和非递归版本的源代码和测试用例。实现冒泡排序的源代码和运行示例。源代码如下:#includeusing namespace std;//实现冒泡排序的void BubbleSort(int* aim, int size){//实现冒泡排序 if(size <= 1) retu原创 2017-08-03 17:49:57 · 646 阅读 · 0 评论 -
判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十
判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十今天分享一下判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像,并且判断在递增矩阵中某数是否存在。。判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像源代码如下:#includeusing namespace std; struct TreeNode { int val; struct TreeN原创 2017-07-24 23:09:00 · 423 阅读 · 0 评论 -
实现二叉树的前序/中序/后序非递归遍历——题集(十一)
非递归实现二叉树的前序/中序/后序遍历——题集(十一) 今天分享一下非递归实现二叉树的前序/中序/后序遍历,以及用不含头结点的单链表存储集合A和B,求解集合A与B的差集,并将结果保存在集合A的单链表中。。 实现二叉树的前序/中序/后序非递归遍历的源代码和运行示例。源代码如下:#includeusing namespace std;#include /原创 2017-07-26 23:03:01 · 546 阅读 · 0 评论 -
判断一个节点是否在一棵二叉树中和判断一颗二叉树是否是另一颗树的子树——题集(十二)
判断一个节点是否在一棵二叉树中和判断一颗二叉树是否是另一颗树的子树——题集(十二) 今天分享一下,判断一个节点是否在一棵二叉树中和判断一颗二叉树是否是另一颗树的子树。 判断一个节点是否在一棵二叉树中的源代码和运行示例。 说明:节点为空,默认结点在二叉树中;二叉树为空,默认结点不在二叉树中。本程序默认对比结点的值,所以该二叉树中最好没有有重复值的结点。原创 2017-07-27 22:52:09 · 869 阅读 · 0 评论 -
对有限数组进行计数排序和求一个无序数组的中位数——题集(十八)
对有限数组进行计数排序和求一个无序数组的中位数——题集(十九)今天分享一下,实现对有限数组进行计数排序和求一个无序数组的中位数的代码实现和测试用例。数组定义为:int a[] = {12,13,12,13,19,18,15,12,15,16,17},要求对数组a进行排序,要求时间复杂度为O(N)。对数组a进行计数排序的源代码和运行示例。说明:数组a的大小和值的大小都有限而且比较紧凑原创 2017-08-04 22:15:26 · 619 阅读 · 0 评论 -
实现插入排序和希尔排序——题集(十五)
实现插入排序和希尔排序——题集(十六) 今天分享一下实现插入排序和希尔排序和使用shell脚本实现希尔排序的源代码和运行示例。 实现插入排序的源代码和运行示例。源代码如下:#includeusing namespace std;//实现插入排序void InsertSort(vector& aim){//插入排序 int size=aim.size原创 2017-07-31 22:46:37 · 388 阅读 · 1 评论 -
实现选择排序和堆排序——题集(十六)
实现选择排序和堆排序——题集(十七)今天分享一下实现选择排序和堆排序的源代码和测试用例。实现选择排序的源代码和运行示例。源代码如下:#includeusing namespace std;//实现选择排序void SelectSort(int* tmp, int len){//实现选择排序 if(len<=0) return; int i=0; int end=le原创 2017-08-02 21:11:10 · 277 阅读 · 0 评论 -
实现归并排序和大文件排序——题集(十九)
实现归并排序和大文件排序——题集(十八)今天分享一下实现归并排序和大文件排序的源代码和测试用例。实现归并排序的源代码和运行示例。源代码如下:#includeusing namespace std; int main(){ system("pause");return 0;} 运行结果: 有一个大文件内容如下:原创 2017-08-05 22:37:55 · 1210 阅读 · 0 评论 -
二叉搜索树转换成一个排序的双向链表和实现一个线程安全且高效单例类——题集(二十一)
二叉搜索树转换成一个排序的双向链表和实现一个线程安全且高效单例类——题集(十五) 今天分享一下实现二叉搜索树转换成一个排序的双向链表和用C++实现一个线程安全且高效单例类的源代码和运行示例。 将二叉搜索树转换成一个排序的双向链表的源代码和运行示例。 提示:要求不能创建任何新的结点,只能调整树中结点指针的指向,也就是left当prev,right当n原创 2017-08-06 17:52:05 · 509 阅读 · 0 评论 -
求二叉树的高度和销毁一颗二叉树——题集九
求二叉树的高度和销毁一颗二叉树——题集九 今天来分享一下,求二叉树的高度和销毁一颗二叉树以及如何实现链表翻转(链表逆置的升级变型)。 求二叉树的高度和销毁一颗二叉树(Destroy(Node* root) )的源代码和运行示例。源代码如下:#includeusing namespace std; struct TreeNode { int va原创 2017-07-23 19:16:35 · 457 阅读 · 0 评论 -
二叉树叶子节点的个数和第k层的节点个数——题集八
二叉树叶子节点的个数和第k层的节点个数——题集八 今天,博主没懒丢,所以来分享一下二叉树叶子节点的个数和第k层的节点个数,求数组中数字次数超过数组一半的字符。 求二叉树叶子节点的个数的源程序和运行用例。源代码如下:#includeusing namespace std;#include struct TreeNode { int val;原创 2017-07-22 23:08:25 · 541 阅读 · 0 评论 -
合并两个有序链表——题集(一)
合并两个有序链表——题集(一) 今天分享三道数据结构的题,分别是合并两个有序链表,合并以后的链表依旧有序;实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字;求两个整数之和,不得使用四则运算。 合并两个有序链表,合并以后的链表依旧有序:代码如下:#includeusing namespace std; //--合并两个有序链原创 2017-07-13 15:37:39 · 632 阅读 · 0 评论 -
B树的插入
今天,我们来分享一下B树的插入。B树是一种适合外查找且平衡的多叉树,下面简单介绍一下N阶B树(N叉树)的性质。a. 根结点至少有两个孩子。(根结点至少有一个关键字,一个关键字有两个孩子)b. 每个非根结点有[N/2, N]个孩子。(最多N个孩子,保证该树是N叉树)c. 每个非根结点有[N/2-1, N-1]个关键字,且以升序排列。(孩子比关键字多1)d. 关键字_key[i]和原创 2017-05-12 18:04:42 · 608 阅读 · 0 评论 -
复杂链表复制——时间复杂度为O(N)
今天我们来分享一下关于复杂链表复制,时间复杂度为O(N)的算法。 复杂链表是拥有节点值,后继节点及随机前序节点的链表,复杂链表复制的难度在于如何找到那个随机的前序节点,一般的算法在找前序节点的效率是非常低的,需要结合被复制的链表去遍历查找,时间复杂度一般为O(N)。 下面我们来举例说明这个时间复杂度为O(N)的复杂链表复制算法,一般用面向过程书写比较方便。 首先,将原创 2017-04-08 12:03:36 · 1460 阅读 · 1 评论 -
逆置单链表以及求链表倒数第k个结点——题集(二)
逆置单链表及求链表倒数第k个结点——题集(二) 今天分享一下两道练习题,即逆置单链表以及求链表倒数第k个结点,要求时间复杂度为O(1)。 首先分享一下逆置单链表的代码和运行界面。单链表分为带头结点的单链表和不带头结点的单链表。 源代码如下:#includeusing namespace std; //逆置/反转单链表,要求只能遍历一次链表原创 2017-07-14 22:28:38 · 589 阅读 · 0 评论 -
带环单链表——题集(三)
带环单链表——题集(三) 今天分享一下与带环单链表相关的题。分别为:判断链表是否带环;若带环求环的长度;若带环求环的入口点;并计算以上每个问题的时间复杂度。其次是设计一个类不能被继承;设计一个类只能在堆上创建对象;设计一个类只能在栈上创建对象。 判断链表是否带环;若带环求环的长度;若带环求环的入口点;并计算以上每个问题的时间复杂度。源代码:#include原创 2017-07-15 21:47:55 · 245 阅读 · 0 评论 -
实现一个Min栈——题集(六)
实现一个Min栈 今天分享一下,实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) ,查找一个字符串中第一个只出现两次的字符以及计算一个整数二进制位中1的个数。 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)。原代码如下:#incl原创 2017-07-20 15:55:23 · 344 阅读 · 0 评论 -
判断一棵树是否是完全二叉树和求二叉树中两个节点的最近公共祖先——题集(十三)
判断一棵树是否是完全二叉树和求二叉树中两个节点的最近公共祖先——题集(十三)今天来分享一下,如何判断一棵树是否是完全二叉树和求二叉树中两个节点的最近公共祖先的代码实现和运行示例。判断一棵树是否是完全二叉树的源代码和运行示例。提示:层序遍历变型题。 源代码如下:#includeusing namespace std;#include struct TreeNode原创 2017-07-28 23:29:09 · 1201 阅读 · 0 评论 -
判断链表相交,删除无头单链表的非尾节点及倒序打印单链表——题集(四)
判断链表相交,删除无头单链表的非尾节点及倒序打印单链表——题集(四) 博主昨天懒丢了,耽搁了昨天的题集更新,所以今天的题集分享可能有点长,首先判断链表相交并求交点的情况,其次删除无头单链表的非尾节点及倒序打印单链表。 在链表带环和不带环的情况下,分别判断两个链表是否相交,若相交,求交点。源代码如下:#includeusing namespace std;原创 2017-07-17 12:07:12 · 321 阅读 · 0 评论 -
由前序遍历和中序遍历重建二叉树和C语言模式实现C++继承和多态——题集(十四)
由前序遍历和中序遍历重建二叉树和C语言模式实现C++继承和多态——题集(十四) 今天分享一下实现由前序遍历和中序遍历重建二叉树和C语言模式实现C++继承和多态的源代码和运行示例。 由前序遍历和中序遍历重建二叉树的源代码和运行示例。(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5)源代码如下:#includeusing names原创 2017-07-30 18:32:05 · 1007 阅读 · 0 评论 -
二叉树的层序遍历——题集(七)
二叉树的层序遍历——题集(七) 今天分享一下二叉树的层序遍历,并判断N的阶乘的末尾有多少个0。 实现一颗二叉树的层序遍历的源代码和运行示例如下。 源代码如下:#includeusing namespace std;#include struct TreeNode { int val; struct TreeNode *left;原创 2017-07-22 19:18:58 · 481 阅读 · 0 评论 -
模拟实现C库的atoi和itoa——题集(二十三)
模拟实现C库的atoi和itoa——题集(二十三)今天主要分享一下模拟实现C库的atoi和itoa的代码实现和运行示例.C库的atoi的定义如下:int atoi (const char * str);模拟实现C库的atoi的源代码和运行示例。源代码如下:#includeusing namespace std;int AtoI (const char * str){原创 2017-08-10 21:21:57 · 663 阅读 · 0 评论