龙跃十二

唯有坚韧者始能遂其志

数据结构与算法知识点总结—思维导图

数据结构与算法是学习编程者的必修课,下面是我学习完之后的知识点梳理与总结。 本来用xmind做的时候把重要知识点都附了博客链接,但是xmind导出来后打不开了。 不用担心我把相关内容放在了数据结构专栏里。 专栏地址:http://blog.csdn.net/column/details/...

2018-03-19 19:53:53

阅读数 5825

评论数 0

海量数据处理

给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 思路:首先100G大小的文件,计算机内存无法存储,所以我们解决问题首先不能考虑把文件放在内存中在去遍历统计次数。但是我们可以数据结构中的哈希表来处理。 1)切割文件:将100G的大文件文件...

2018-03-08 18:28:09

阅读数 305

评论数 0

排序算法(七大经典排序算法)

排序算法是一种在日常生活中应用很广泛的算法,所以我们应该很好的掌握他。然而最熟悉的往往是最容易忽略的。“工欲善其事,必先利其器”,下面对常见算法逐个介绍。主要介绍 插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序。

2018-03-05 15:39:23

阅读数 1014

评论数 3

哈希表扩展—布隆过滤器(Bloom Filter)

1.概念: 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过...

2018-03-03 17:20:17

阅读数 326

评论数 0

哈希表扩展—位图

1.什么是位图? 位图就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图。 所以我们可以了解到,位图就是一个只用每一位来保存数的状态的结构。 ...

2018-03-02 21:53:28

阅读数 322

评论数 0

哈希表的开散列法(拉链法)

开散列法又叫链地址法(开链法)。 开散列法:首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。 设元素的关键码为37, 25, 14, 36, 49, 68, 57, 11, ...

2018-03-01 21:56:28

阅读数 964

评论数 0

哈希表(散列表)详解

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 顺序搜索以及二叉树搜索树中,元素存储位置和元素各关键码之间没有...

2018-02-28 21:13:24

阅读数 452

评论数 1

二叉搜索树应用-判断一个单词是否拼写正确,实现简单字典

本文在windows下vs2008上测试通过,本文阐述了两个问题 1. 验证一个单词是否拼写正确 2. 请模拟实现一个简单字典 这两个问题都是典型的K(key)V(value)问题,我们用KV算法解决。

2018-02-27 19:44:14

阅读数 796

评论数 0

【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)

一、搜索二叉树的插入,查找,删除 简单说说搜索二叉树概念: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索...

2018-02-26 21:28:22

阅读数 398

评论数 0

【数据结构】——堆及其应用

一、堆 先说说堆概念:如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2*i+1 且 Ki<= K2*i+2 (Ki >=K2...

2018-02-25 20:22:15

阅读数 316

评论数 0

回溯法解决迷宫问题

今天在又一次看到了回溯法解决关于迷宫的问题,于是在这里分享给大家。 回溯法:对一个包括有很多个结点,每个结点有若干个搜索分支的问题,把原问题分解为若干个子问题求解的算法;当搜索到某个结点发现无法再继续搜索下去时,就让搜索过程回溯(回退)到该节点的前一个结点,继续搜索该节点外的其他尚未搜索的分支;...

2018-02-08 12:03:48

阅读数 791

评论数 0

【数据结构】顺序表和单链表所有知识点(附带面试题)

一、顺序表 顺序表定义 :顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序...

2018-02-06 13:41:25

阅读数 1307

评论数 2

单双链表练习题

本文是关于链表的一些操作(包括单链表和双向循环链表) 1、单链表,双链表的创建。 2、单链表和双链表的打印。 3、单链表的插入,删除。 4、双链表的插入和删除。 5、单链表的逆置。 6、单链表节点的个数。 7、单链表,双链表的查找。 函数代码: //链表相关问题 typed...

2018-01-27 17:52:26

阅读数 258

评论数 0

二叉树简单操作(下)

一、二叉树基本操作  1. 求二叉树的深度。(树的深度:树中所有节点的层次的最大值称为该树的深度)  2. 求二叉树叶子结点的个数。(叶子节点:度为0的结点称为叶结点,叶节点也称为终端节点)  3. 求二叉树结点的个数。(节点:结点包括一个数据元素及若干指向其他子树的分支(指针(索引))) ...

2018-01-22 14:56:52

阅读数 208

评论数 0

二叉树基本操作(上)

一、二叉树简单操作 1、二叉树的创建(二叉链) a[] = {1,2,3,’#’,’#’,4,5,’#’,’#’,6,’#’,’#’,7,8,’#’,9,’#’,’#’,’#’};(‘#’代表NULL)。 2、二叉树的遍历 (1)迭代法遍历(①前序遍历②中序遍历③后序遍历) (2...

2018-01-21 20:46:07

阅读数 172

评论数 0

二叉树基本操作(上)

一、二叉树基本操作 1、二叉树的创建(二叉链) a[] = {1,2,3,’#’,’#’,4,5,’#’,’#’,6,’#’,’#’,7,8,’#’,9,’#’,’#’,’#’};(‘#’代表NULL)。 2、二叉树的遍历 (1)迭代法遍历(①前序遍历②中序遍历③后序遍历) (2)递...

2018-01-21 20:38:03

阅读数 222

评论数 0

迷宫问题

一、迷宫问题 1、打印迷宫。(打印二维数组) 2、简单迷宫,找出其中的通路(①迭代法。②递归法)。 3、多条通路迷宫,找出所有的通路。 4、多条通路和带环通路迷宫,求最短通路。 二、函数代码: 1、打印迷宫地图: void MazePrint() //打印迷宫 { ...

2018-01-20 23:18:35

阅读数 203

评论数 0

链式栈的基本操作

一、链式栈的基本操作 1、栈的创建。 2、栈的初始化。 3、入栈,出栈。 5、取得栈顶元素。 6、求栈的大小,判断栈是否为空。 二、代码: //链式栈的基本操作 typedef struct LinkStack //创建链式栈 { DataType data;...

2018-01-15 20:53:56

阅读数 925

评论数 0

栈和队列基本知识

一、栈和队列基本知识 1、栈和队列的创建。 2、栈和队列的初始化。 3、栈的增容。 4、入栈,出栈,入队,出队。 5、取得栈顶,队头和队尾元素。 6、求栈和队列的大小,判断栈和队列是否为空。 二、代码: 栈的基本操作: void StackInit(Stack *s) //栈的初...

2018-01-13 13:59:04

阅读数 452

评论数 0

链表相交和带环问题

一、题目 1、判断单链表是否带环?若带环,求环的长度?求环的入口点? ①链表是否带环问题。( 定义两个指针同时指向头节点,一个快指针,一个慢指针,两个指针同时遍历链表,快指针一次走两步,慢指针一次走一步,如果链表带环,两个指针一定会在环内相遇。例如两个人在操场同时跑步,跑得快的人一定会追上跑得...

2018-01-08 21:34:43

阅读数 156

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭