![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
立 夏
目前长期在线,欢迎叨扰。
面朝太阳,内心充满阳光。
画一个大的圈,自己注入能量。
展开
-
单链表的增、删、查、改
单链表是一种链式存取的数据结构,用申请的地址存放每个节点,这些地址可能是连续,也可能是不连续的。每个结点的构成:元素(数据元素的映象,data) + 指针(指示后继元素存储位置,next)。通过指针将线性表的数据一个个串联起来,要想访问一个数据,就要知道前一个指针,想知道前一个就要知道前前一个,依次向前找。所以,一般访问是从头指针开始向后查找目标,方向是单向的。 头指针一般是固定的...原创 2018-02-20 11:48:21 · 1258 阅读 · 0 评论 -
动态顺序表的一些增、删、查、改、排序
顺序表呢,是线性表的一种。它用一段地址连续的存储单元依次存储数据元素的线性结构,地址空间是连续的,一般情况下采用数组,但数组有静态数组和动态数组, 所以顺序表分为:静态顺序表和动态顺序表。 今天写的这个呢是动态的顺序表,就是在静态基础上加了判满,扩容,销毁的函数。 功能如下: 链表开头插入,删除 链表尾部插入,删除 低效普通查找 ...原创 2018-02-01 23:23:36 · 305 阅读 · 0 评论 -
栈和队列的插入、删除、获取头尾元素操作
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈又称为后进先出的线性表。 Stack.h#pragma once#include<stdio.h>#include<assert.h>#include<Windows.h>typedef int DataType;...原创 2018-02-22 12:55:32 · 15631 阅读 · 0 评论 -
哈希开放地址法以及哈希切割top K问题
先说下哈希表,它又叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 我们找对应值的话,只需到映射位置就可以,效率非常之高。 对应算法代码 Hash.h#pragma once#include<stdio.h>#in...原创 2018-04-03 18:04:08 · 394 阅读 · 0 评论 -
用位图解决大量整数只出现一个,不超过两次,文件交集问题
先略提下位图:位图是建立在哈希表的基础上进行的优化,哈希表可能用1个字节或者4个字节来表示key,如果数据太多,哈希表就会占用大量空间。为了解决这个问题,聪明的人类发明了了位图。找到key的用一个bit来存储一个数的状态,0表示不存在,1表示存在。这样查找key是只需判断对应bit是1还是0就行,解决了哈希表占用空间的问题。例题:位图应用 给定100亿个整数,设计算法找到只出现一次的整...原创 2018-04-03 20:33:28 · 360 阅读 · 0 评论 -
布隆过滤器+哈希切分
1.首先了解下什么是布隆过滤器,它实际上是一个很长的二进制向量和一系列随机映射函数。 如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。 2.不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数...原创 2018-04-05 12:32:07 · 925 阅读 · 2 评论 -
倒排索引
看到有倒排索引,大家肯定会想知道什么是正排索引。 1.正排索引:知道文档d,得到文档d的关键字的位置序列,实现方式是 文档编号+关键字数组;就像从翻书用页码去找自己想要找的关键字一样。 2.倒排索引:知道关键字w,找到包含关键字的文档d1,d2,d3…. 实现方式是:关键字key做键的字典,值是文档编号数组;像翻书一样,根据关键字去找有这个关键字的页码 无论是哪一种索引,...原创 2018-04-05 14:07:51 · 325 阅读 · 0 评论