
数据结构
HandsomeWGB
高起点
展开
-
栈(stack)
栈(stack)是一个后进先出的线性表,只允许在栈顶插入和删除元素栈的结构栈的接口 push() :入栈 pop() : 出栈 top() : 获取栈顶元素 empty(): 判空 size():栈中元素的个数 Python中的列表(list)就类似一个栈,对应的接口实现: 栈的应用–括号匹配 先创建一个栈,保存为匹配得左括号 遍历字符串 如果是左括号入栈 如果是右括号 此时如果栈空,右括号多原创 2017-05-26 22:14:56 · 552 阅读 · 0 评论 -
AVL树
AVL树诞生的原因 如果数据是有序的或者接近有序的,搜索二叉树就会产生单支的情况,单支就相当于在顺序表中搜索元素,降低了效率。因此1962年俄罗斯两位数学家发明了AVL树。 AVL树 在二叉搜索树中插入新的结点后,保证每个结点的左右子树的高度之差的绝对值不超过1,就可以降低树的高的,减少平均搜索长度。 性质: - 左右子树都是AVL树 - 左右子树的高的之差为-1或0或1(原创 2017-05-22 15:27:12 · 351 阅读 · 0 评论 -
布隆过滤器
布隆过滤器 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(哈希表,Hash table)等数据结构都是这种思想。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也会越来越慢。 原理 Bloom Filter 是一种空间效率很高的随机数据结构,Bloom Filter 可以看做是对bit-map的扩展,它的原创 2017-08-08 20:28:42 · 1000 阅读 · 1 评论 -
SGI-STL空间配置器
SGI-STL标准空间配置器 std::allocator是SGI定义的一个标准的配置器,只是把operator new 和 operator delete 做了层封装,不建议使用,主要因为效率不佳。 源码: SGI-STL特殊空间配置器 STL将内存配置与释放和对象的构造与析构分开实现: #include <stl_construct.h> construct(T1* p, cons原创 2017-08-16 22:00:27 · 556 阅读 · 0 评论