C/C++
文章平均质量分 86
giantbranch
邮箱:simplelogin.irjqx#aleeas.com
展开
-
优先队列解哈夫曼编码问题之带权路径长度
1.什么是优先队列?先说个生活中的例子想想医院,重症急诊患者肯定不能像普通患者那样依次排队就诊,他们就可以插队了他比较迟进队列,但他优先级高,所以就相对较早出队列去就诊了优先队列一般用堆来实现,堆有两种(具体看这:http://blog.csdn.net/u012763794/article/details/51002372)对于大根堆实现的优先队列,总是优先级原创 2016-03-30 23:39:09 · 2939 阅读 · 0 评论 -
重学数据结构系列之——图论算法之Prim算法
1.首先了解一些概念:生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。(简单来说就是顶点不变,但边数是n-1条,而且抽取出来后,图还是连通的)最小生成树:如何从一个带权图中抽出一棵生成树,使得边权值和最小,这棵生成树就叫做最小生成树。(就是找生成树中权值之和最小的)2.Prim算法即原创 2016-04-16 22:10:56 · 906 阅读 · 0 评论 -
重学数据结构系列之——图的储存
1.什么是图比如说我们的关系网络,就来微信来说,我们把用户看成是一个点,是好友的我们就把这两个点连起来。如下面的就是一个简单的图2.图的分类有向图和无向图,上图就是无向图,有向图是单向的,边用箭头来表示,如下:3.图的常用概念顶点:就是那些点咯边:就是连接两个顶点的线,分为有向边和无线边下面一般是指有向原创 2016-04-09 11:41:04 · 884 阅读 · 0 评论 -
重学数据结构系列之——图的遍历(广度优先搜索和深度优先搜索)学习来源:计蒜客
官方的官方原创 2016-04-09 13:32:29 · 4064 阅读 · 0 评论 -
重学数据结构系列之——堆及堆排序
1.定义满足一下两个条件1.首先它是一颗完全二叉树(就是除了最后一层,每个结点都有两个孩子,最后一层只缺少右边的若干结点。)看看这个就明白:http://baike.baidu.com/pic/完全二叉树/7773232/0/906289ddefbfa4745882dd18?fr=lemma&ct=single#aid=0&pic=906289ddefbfa4745882dd18原创 2016-03-29 21:33:14 · 1332 阅读 · 0 评论 -
重学数据结构系列之——二叉排序树
1.定义对任意结点,如果左子树不为空,则左子树上所有结点的权值都小于该结点的权值;如果右子树不为空,则右子树上所有结点的权值都大于该结点的权值;任意结点的左子树和右子树都是一棵二叉排序树;2.实现原创 2016-03-24 13:29:43 · 2013 阅读 · 0 评论 -
重学数据结构系列之——平衡树之SB Tree(Size Blanced Tree)
1.定义对于每个结点,左右两个子树的高度差的绝对值不超过1,或者叫深度差不超过1为什么会出现这样一种树呢?假如我们按照1-n的顺序插入到二叉排序树中,那么二叉排序树就退化成了一个有序链表,效率大大降低。2.有关概念所有平衡树基本由以下三个特征组成:1.自平衡条件2.旋转操作3.旋转的触发平衡树通过设置合理的自平衡条件,使得二叉排序原创 2016-03-25 21:22:42 · 7597 阅读 · 2 评论 -
重学数据结构系列之——二叉树基础
1.定义每棵树有且仅有一个树根左边就是一个二叉树(二叉树的每个结点最多只有两个孩子结点,也就是说每个结点最多有两个子树),右边是不确定是不是叫三叉树树的每个结点有多少个儿子(叉),就叫多少叉树其实我们的计算机的目录结构就像一棵树原创 2016-03-22 20:19:36 · 1105 阅读 · 1 评论 -
重学数据结构系列之——哈希表
注:编译器不同,遵循的标准有差异,老的标准(C99?),我的就是在VC++6.0中,在同一个作用域,for循环对i只能声明一遍1.定义哈希表,也叫散列表。根据关键码值(Key value)而直接进行访问的数据结构。比如你要查a,通过哈希函数f(a) = k就可以得到哈希表b的索引,b[k]即可获取a 对应的value百度百科:http://baike.baidu.com/lin原创 2016-03-22 00:14:41 · 897 阅读 · 0 评论 -
C与javascript格式的shellcode相互转换小工具
最近在分析一些ie的漏洞,一般的shellcode都是C语言版的,所以就随手写个小工具编程语言:C++, 利用MFC框架整个工程的源码及可执行程序下载(release和debug版都有编译):https://github.com/giantbranch/convert-c-javascript-shellcode先看看效果转化代码:c到j原创 2016-10-25 09:38:51 · 2368 阅读 · 1 评论 -
linux系统调用号查询
信息来源于/usr/include/asm/unistd_32.h 发出来方便自己和各位查询32位cat /usr/include/asm/unistd_32.h #ifndef _ASM_X86_UNISTD_32_H#define _ASM_X86_UNISTD_32_H 1#define __NR_restart_syscall 0#define __NR_exit 1#defin原创 2017-12-11 23:22:27 · 8638 阅读 · 0 评论 -
重学数据结构系列之——八大排序算法
一、有一种分类稳定排序:如果线性表中的两个元素 ai 和 aj 满足 i 简单来说就是排序前有两个或多个相等的元素,排序后他们的相对位置不会改变)不稳定排序:不是上面的情况就是了注:下面的默认都是升序排序以下排序使用的“框架"(只要把下面的sort函数具体实现不同的排序算法就行)#include #include using namespac原创 2016-04-19 23:11:01 · 3613 阅读 · 0 评论 -
重学数据结构系列之——栈
1.栈在以后的重学数据结构系列,为了废话没那么多,就不复制百度百科等的了。直接用自己的话来说。1.栈是什么你就想象一个园桶,从上到下的直径都是一样的,我们向里面放入刚好能放入的圆碟,直到桶碟满,然而你只能从最上面的园碟开始拿。这就可以叫做栈最重要的是先进后出,First In Last Out(FILO)。2.栈的实现原创 2016-03-20 11:25:15 · 771 阅读 · 0 评论 -
重学数据结构系列之——队列
队列1.定义你就想象一下现实中的排队,但要理想化,不能插队哦所以队列有一个很重要的性质,就是先进先出,First In First Out(FIFO)。原创 2016-03-19 12:19:55 · 867 阅读 · 0 评论 -
重学数据结构系列之——线性表基础
学习来源:计蒜客顺序表1.定义顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。------by百度百科最重要的一点,它在内存中是连续的下面也是从计蒜客复制过来的顺序表在程序中通常用一维数组实现,一原创 2016-03-18 19:10:01 · 1151 阅读 · 0 评论 -
如何判断出栈序列合理性
1.原理模拟栈的入栈和出栈,根据 大的数先出栈, 比它小的数必须由大到小出栈,但不一定连续出栈如: 3 2 1 5 4 或者 3 2 5 4 1 ————3先出栈,2和1必须由大到小出栈,他们可以连续出栈也可以在中间隔着几个数,但1在2前出栈坑定是不行的,如 3 1 2 5 4 或3 1 5 4 2,这都是不合理的顺序2.代码实现这里使用了之前学习栈编写的Stack类原创 2016-03-20 15:09:54 · 1755 阅读 · 0 评论 -
大寫字母換成對應的小寫字母,小寫字母換成對應的大寫字母。爲避免領導難堪,還需要將其中的“government_official” (不論大小寫)替換爲“temporary_worker”(全部小寫)
算单词的个数和每个单词#include"iostream"#include"string"#include"cctype"using namespace std;void to(string& a){for(string::size_type i=0;i<a.size();i++){if(isalpha(a[i])){if(islower(a[i])) a[i]=toupper(a[i]);els原创 2014-04-08 21:19:05 · 1955 阅读 · 2 评论 -
重学数据结构系列之——森林之并查集(Disjoint set)
1.森林森林就是有很多的树组成的2.森林(并查集)的初始化每个元素都是各自构成一个集合,比如说自然数1到3,初始化时就3个集合{1},{2},{3},之后我们会实现合并操作,将两集合合并3.大概长什么样4.简单实现原创 2016-04-01 23:00:35 · 975 阅读 · 0 评论 -
利用广度优先搜索求最短路径
注:下面是以无权的图为基础的广度优先搜索:http://blog.csdn.net/u012763794/article/details/510818301.问题描述输入:输入n个顶点,m条边, 起点的编号跟着再输入边x,y输出:该起点到达各个顶点最少经过几条边样例:输入:5 5 21 22 32 43 43 5原创 2016-04-09 13:57:30 · 8436 阅读 · 3 评论 -
用MFC打造你的的移位密码解密器
这是上年写的,直接开给大家了,大家一起分享学习鼓励吧~~~~~~先看看效果这个在简单的ctf中还是很有用的,http://blog.csdn.net/u012763794/article/details/50132513,我在这里用了好几次了一切都是从简单做起的吧,不写简单的工具怎么写高大上的工具呢。工具下载:https://raw.githubus原创 2016-04-14 10:13:37 · 3317 阅读 · 0 评论 -
重学数据结构系列之——总结
重学数据结构系列之链接汇总:重学数据结构系列之——八大排序算法 http://blog.csdn.net/u012763794/article/details/51189364重学数据结构系列之——静态查找表查找算法 http://blog.csdn.net/u012763794/article/details/51180845重学数据结构系列之——图论算法之Dijkstra算法原创 2016-04-25 00:01:57 · 1429 阅读 · 2 评论 -
重学数据结构系列之——图论算法之FloodFill 算法
1.FloodFill 算法通常译作“洪水灌溉法”,算法通过给图中的顶点染色,最终使得同一个连通分量的顶点颜色相同,不同连通分量的顶点颜色不同。首先了解一些概念:子图(subgraph):若一个图的顶点集和边集分别是另一图的顶点集的子集和边集的子集,则称该图为另一图的子图。连通:在无向图中,如果有从顶点 vv 到顶点 ww 的路径存在,则称 vv 和 ww 是连通的。若图原创 2016-04-10 16:40:38 · 4475 阅读 · 0 评论 -
重学数据结构系列之——图论算法之Dijkstra算法
1.Dijkstra算法定义迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。2.代码#include #include #include #include using namespace std;//定义一个较大的整形数const int INF =原创 2016-04-16 23:56:44 · 2115 阅读 · 0 评论 -
重学数据结构系列之——静态查找表查找算法
1.认识查找就是在一个集合里面找到某个元素。集合就叫查找表通常对查找表有 4 种操作:查找:在查找表中查看某个特定的记录是否存在检索:查找某个特定记录的各种属性插入:将某个不存在的数据元素插入到查找表中删除:从查找表中删除某个特定元素如果对查找表只执行前两种操作,则称这类查找表为 静态查找表(static search table)。静态查找表建立以后,就不能再原创 2016-04-18 17:53:12 · 1337 阅读 · 0 评论 -
那些你用的到的C++注册表操作
获取注册表信息以获取cpu信息为例long lRet;HKEY hKey;TCHAR tcData[64];DWORD dwSize;lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_QUERY原创 2018-01-17 11:26:21 · 505 阅读 · 0 评论