
数据结构
_s瓶子
这个作者很懒,什么都没留下…
展开
-
堆的创建、插入、删除,模板参数实现堆以及模板的模板参数实现堆
最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最小最大堆:任一结点的关键码均大于等于它的左右孩子的关键码,位于堆顶结点的关键码最大//普通实现最小堆#define _CRT_SECURE_NO_WARNINGS#includeusing namespace std;#include#include#includetemplatecl原创 2017-03-04 16:39:06 · 307 阅读 · 0 评论 -
链表面试题---删除倒数第k个结点、逆置单链表
要删除链表倒数第k个结点,需满足下述条件: 1、链表不能为空; 2、k不能等于0; 3、k不能大于链表的结点总数(链表长度) 删除时,应先找到倒数第k个结点,并标记该结点的前一个结点和后一个结点。 找倒数第k个结点: 1、aNode指向头结点phead,aNode在链表上走k-1步 2、bNode指向头结点phead 3、两个指针一起沿着链表走 4、aNode指向链表的尾结点时,b原创 2017-05-16 13:47:50 · 521 阅读 · 0 评论 -
链表面试题--两种方法逆序打印单链表(栈和递归)
方法一: 我们可以遍历链表,可是遍历链表的顺序是从头到尾,而打印(输出)链表的顺序是从尾到头。即第一个遍历到的结点最后一个输出,最后一个遍历到的结点第一个输出。这正号符合栈“先进后出”的思想,所以我们可以用栈来实现。每经过一个结点的时候,把结点放到栈中,当遍历完整个链表后,从栈顶开始逐个输出结点的值,这样就可以逆序打印出该链表了。 具体实现如下:void List::ReversePrint2(原创 2017-05-04 20:42:29 · 1481 阅读 · 1 评论 -
布隆过滤器
Bloom Filter 是一种空间效率很高的随机数据结构,Bloom filter 可以看做是对 bit-map 的扩展, 它的基本思想是: 如果判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定,但是随着集合元素的增加,需要的存储的空间越来越大,检索的速度聚会越来越慢,这时我我们会想到散列表(哈希表hashtable)的数据结构。通过一个hash函数将一个元素映射原创 2017-05-04 20:13:20 · 255 阅读 · 0 评论 -
面试题之位图及其相关操作
腾讯面试题: 题目:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 如果直接存储,40亿int数据如果存起来大概需要16G的空间,显然是不可能一次性存储完。 如果采用位图这种存储结构,因为一个数存在不存在只需要用两种状态就可以表示出来(1存在,0不存在),所以一个int数据有32个位,可以表示32个数据存在不存在,因此16G的数据用位图来存在原创 2017-05-04 17:47:23 · 1014 阅读 · 0 评论 -
红黑树
红黑树:红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是red或者black,通过对任何一条从根节点到叶子结点上的简单路径来约束,红黑树保证最长路径不超过最短路径的两倍,因而近视平衡。 性质: 1. 每个结点不是红色就是黑色 2. 根节点是黑色的 3. 如果一个根节点是红色的,则它的两个叶子结点是黑色的(没有两个连续 的红色结点) 4. 对于每个结点,从该结原创 2017-05-12 20:46:08 · 254 阅读 · 0 评论 -
二叉搜索树的插入、查找、删除等操作
二叉搜索树:又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树1、若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2、若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3、它的左右子树也分别为二叉搜索树查找(key为要查找的值):if(pRoot==NULL) return false else 若pRoot->key==key,原创 2017-04-20 20:30:08 · 399 阅读 · 0 评论 -
AVL树的插入以及四种旋转
AVL树:即平衡二叉搜索树。平衡因子bf=右子树的高度-左子树的高度,bf为0,-1,1时,此树即平衡。AVL树的前提是该树为二叉搜索树。 中序遍历只需遍历一次,且是有序的。 以下为四种旋转的图解 左单旋(RotateL): 右单旋(RotateR): 左右双旋(RotateLR): 右左旋(RotateRL): 具体代码如下:#de原创 2017-04-20 13:23:05 · 1984 阅读 · 0 评论 -
二叉树的线索化以及遍历(前序、中序、后序)
#define _CRT_SECURE_NO_WARNINGS#include using namespace std;#include #includeenum ThdInfo{LINK,THREAD};templatestruct BinaryTreeThdNode{BinaryTreeThdNode(const T& data): pl原创 2017-02-20 11:48:11 · 446 阅读 · 0 评论 -
哈希表平均查找长度
题目:关键字序列为:{38,25,74,63,52,48},哈希函数为H(k)=k%7,哈希表的长度为7,用线性探测和链地址法处理冲突,分别计算等概率情况下查找成功的平均查找长度。注:没给哈希表长度,给出装填因子时,可求哈希表长度, 可根据此公式装填因子=元素个数/表长推:表长=元素个数/装填因子。线性探测法由上构造的哈希表如下: 等概率下查找成功的平均查找长度为: ASL=(1+3+1+1+原创 2017-08-13 10:53:31 · 41101 阅读 · 3 评论