- 博客(22)
- 资源 (8)
- 收藏
- 关注
原创 窗口函数中获取主程序实例句柄的三种方法
一。使用hInst全局变量,使窗口过程能访问WinMain中的实例句柄。在WinMain中,只需在建立主窗口之前设置hInst=hInstance即可 二。在窗口过程中使用(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE)函数即可获得程序的实例句柄。 三。在处理WM_CREATE消息的过程中,lParam实际上是指向CREATE
2014-05-15 18:00:27
1437
转载 图的高效数据结构表示
以下内容转自http://blog.chinaunix.net/uid-24774106-id-3505579.html其中添加了一些个人学习过程中的注释和绘图,会特别标出下述代码均在vs2010中测试通过,成功运行 任何一本讲到图算法的算法书,都会讲到图的表示方法有两种 1 邻接矩阵 ,对于N个点的图,需要N×N的矩阵表示点与点之间是否有边的存在
2014-05-15 14:29:48
1085
原创 【数据结构与算法】浅析线性递归和尾递归
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/11357807今天一直在研究尾递归,看了些博文,记下点笔记,供以后复习用线性递归:也即是普通递归,单向递归,线性递归函数的最后一步操作不是递归操作,而是其他的操作。当数据量很大的时候,会造成栈溢出,这是因为,在每次递归调用时,递归函数中的参数,局部变量等都要保
2014-05-15 01:51:58
644
原创 【数据结构与算法】汉诺塔算法——C语言递归实现
汉诺塔的递归实现算法,将A中的圆盘借助B圆盘完全移动到C圆盘上,每次只能移动一个圆盘,并且每次移动时大盘不能放在小盘上面递归函数的伪算法为如下:if(n == 1) 直接将A柱子上的圆盘从A移动到Celse 先将A柱子上的n-1个圆盘借助C柱子移动到B柱子上 直接将A柱子上的第n个圆盘移动到C柱子上 最后将B柱子上的n
2014-05-15 01:50:50
702
原创 【数据结构与算法】二叉树的层序遍历
转载请注明出处: http://blog.youkuaiyun.com/ns_code/article/details/13169703 前面有篇博客详细分析了二叉树三种遍历(前序、中序、后序)方式的递归与非递归实现,参见:http://blog.youkuaiyun.com/ns_code/article/details/12977901,但把二叉树的层序遍历算法给漏掉了,实际上也不能说漏掉了
2014-05-15 01:49:44
654
原创 【数据结构与算法】Huffman树&&Huffman编码(附完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/19174553Huffman Tree简介 赫夫曼树(Huffman Tree),又称最优二叉树,是一类带权路径长度最短的树。假设有n个权值{w1,w2,...,wn},如果构造一棵有n个叶子节点的二叉树,而这n个叶子节点的权值是{w1,w2,...,wn}
2014-05-15 01:48:50
913
原创 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/19617187图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS),因此不再对图的基本概念做过多的介绍,但是要先大致了解下图的几种常见的存储结构。 邻接矩阵 邻接矩阵既可以用来存储无向图,也可以用来存储有
2014-05-15 01:47:29
756
原创 【数据结构与算法】二叉排序树C实现(含完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/19823463二叉排序树简介 二叉排序树(Binary Sort Tree,简称BST),又称二叉查找树,是红黑树、AVL树等的基础。它或是一棵空树,或者是具有下列性质的一棵二叉树: 1、若它的左子树不空,则左子树上所有节点的值均小于它
2014-05-15 01:47:08
870
原创 【数据结构与算法】模式匹配——从BF算法到KMP算法(附完整源码)
转载请注明处处:http://blog.youkuaiyun.com/ns_code/article/details/19286279模式匹配 子串的定位操作通常称为串的模式匹配。模式匹配的应用很常见,比如在文字处理软件中经常用到的查找功能。我们用如下函数来表示对字串位置的定位:int index(const string &Tag,const string &Ptn
2014-05-15 01:46:43
894
原创 【数据结构与算法】内部排序之一:插入排序和希尔排序的N中实现(不断优化,附完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20043459前言 本来想将所有的内部排序总结为一篇博文,但是随着研究的深入,还是放弃了这个念头,斟前酌后,还是觉得分开来写比较好,具体原因,看完本篇博文也就自然明了了。 本篇文章主要探讨插入排序和希尔排序,之所将二者放在一起,很明显,是因为希
2014-05-15 01:46:25
639
原创 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20065107前言 之所以把冒泡排序和选择排序放在一起,是因为二者的实现代码很相似,而且都是最基本的排序方式,非常容易理解和实现。当然,如果仅仅是为了讲述这两种排序方式,那也根本没必要写这篇博文了。和上篇博文一样,我会在冒泡排序和选择排序原始代码的基础上给出
2014-05-15 01:41:33
738
原创 【数据结构与算法】内部排序之三:堆排序(含完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20227303前言 堆排序、快速排序、归并排序(下篇会写这两种排序算法)的平均时间复杂度都为O(n*logn)。要弄清楚堆排序,就要先了解下二叉堆这种数据结构。本文不打算完全讲述二叉堆的所有操作,而是着重讲述堆排序中要用到的操作。比如我们建堆的时候可以采用堆
2014-05-15 01:39:59
482
原创 【数据结构与算法】内部排序之四:归并排序和快速排序(含完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20306991 前言 之所以把归并排序和快速排序放在一起探讨,很明显两者有一些相似之处:这两种排序算法都采用了分治的思想。下面来逐个分析其实现思想。归并排序 实现思想 归并的含义很明显就是将两个或者两个以上的
2014-05-15 01:36:06
1029
原创 【数据结构与算法】内部排序之五:计数排序、基数排序和桶排序(含完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20478753前言 最后三种排序算法了,由于都不是基于比较的排序,因此这三种排序算法可以以线性时间运行。但是因为限制条件的特殊性,因此应用面没有基于元素比较的排序算法广,但是在很多特定的情况下还是蛮有用途的,而且效率极高。计数排序
2014-05-15 01:34:39
672
原创 【数据结构与算法】内部排序总结(附各种排序算法源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20540069内部排序总结 这篇博文我们简要地总结下各种内部排序方法。 这10种排序算法中,前面7种属于建立在“比较”基础上的排序算法,通过决策树已经证明,任何基于比较进行的排序算法的时 间复杂度不可能再优于O(n*logn)。后面
2014-05-15 01:33:30
684
原创 【数据结构与算法】HashTable相关操作实现(附完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/20763801前言 学过Java的人肯定对Hash这个词非常之熟悉,HashTable、HashSet、HashMap等都是对哈希表的封装或改进。这次我们来看下哈希表用C语言表示的封装实现。哈希表 哈希表又叫
2014-05-15 01:32:35
792
原创 【数据结构与算法】字典树(附完整源码)
转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/21183495字典树简介 字典书(Trie Tree),又称单词查找树,是键树的一种,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。 字典树有3个基本性质: 1、根节点不包
2014-05-15 01:27:32
1100
原创 连载:面向对象葵花宝典:思想、技巧与实践(23) - 领域建模三字经
看起来有点不可思议,需求阶段“白纸黑字”的用例文档,经过我们一步一步的操作,逐步就得到了“图形化”的领域模型,面向对象初具雏形。领域建模的三字经方法:找名词、加属性、连关系。 我们接下来以一个样例看看领域模型具体如何建模。1.1. 找名词我们以POS机买单的用例来看看具体如何建领域模型。 首先,将用例中所有的名词挑选出来(如下用例
2014-05-15 01:14:38
685
原创 转:数据结构与算法1:马踏棋盘问题(骑士周游问题)
问题描述:在一个国际象棋的棋盘上,一个马按照它的规则如何才能从一个点出发遍历每一个位置,且每个点只访问一次。 问题分析:这是一个深搜的问题,沿着一条路前进直到遍历全部的点,那就完成了整个的过程。如果不行,就回退一步,换个方向继续前进。这可以用递归很方便地实现。注意到马在某个位置最多有8个方向可以走,因此需要对这8个方向进行试探。当然这8个方向不一定都存在,比如在边缘可能就
2014-05-15 01:10:24
1214
原创 转载:二叉查找树原理分析及查找、插入、删除、遍历实现
二叉查找树介绍二叉查找树作为一种最简单的二叉排序树,它是特殊的二叉树:对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] = key[x]。那么,这棵树就是二叉查找树。二叉查找树具有如下性质:1、如果节点左子树存在,那么左子树中的所有值均小于其根节点的值2、
2014-05-15 01:06:37
1230
转载 一步一步写算法(之链表重合)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 链表重合是一个好玩的问题。原题目是这样的:有两个链表,那么如何判断这两个链表是不是重合的?至于这个链表在什么时候重合的,这不重要,关键是判断这个链表究竟有没有重合。究竟有什么方法呢? 最简单的方法就是查看两者有没有共同点。那么依次判断就行了。
2014-05-15 00:59:48
516
原创 转:一步一步写算法(之通用算法的编写)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们写过各种各样的算法,什么排序、查找、二叉树、队列、堆栈等等。但是我们在编写这些代码的时候却都有一个缺点,不知道大家发现了没有?那就是这些算法中使用的数据结构都是简单的int数据。所以,如果排序的是int,那么用起来没有什么问题。关键就是万一是其他的数据类型,那
2014-05-15 00:57:50
520
交通灯(新)
2013-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人