
数据结构与算法
文章平均质量分 74
红叶幽香
这个作者很懒,什么都没留下…
展开
-
深入浅出--二叉树
二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。可以把二叉树的定义简单得理解为:如存在根,每个节点的度不大于2,每个结点的孩子结点次序不能任意颠倒(递归定义)。原创 2015-12-28 21:44:51 · 1130 阅读 · 0 评论 -
(*p)[3]与*p[3]的区别
(*p)[3]与*p[3]的区别int p[3] p是一个数组,此数组有3个元素,每个元素都是int类型,也就是指向整型数据的指针类型。int a=10,b=20,c=30; int*p[3]={&a,&b,&c};而int(*p)[3]中的p是一个指向数组的指针,此数组有3个int类型的元素。例如:int a[3]={1,2,3}; 那么p就是指向这个数组a的指针。 int(*p)[3]=&a原创 2016-09-27 19:45:18 · 4331 阅读 · 0 评论 -
回溯法(二)
回溯法(二)回溯法回顾背包问题八皇后问题回溯法总结回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解,同时为了加快搜索速度,可使用分支定界方法或约束方法进行剪枝(在当前节点(扩展节点)处,先生成其所有的儿子节点(分支),然后再从当前的活节点(当前节点的子节点)表中选择下一个扩展节点。原创 2016-09-16 17:47:08 · 597 阅读 · 0 评论 -
马踏棋盘问题
马踏棋盘主要的解决方案有两种:一种是基于深度优先搜索的方法,另一种是基于贪婪算法的方法。第一种基于深度优先搜索的方法是比较常用的算法,深度优先搜索算法也是数据结构中的经典算法之一,主要是回溯的算法思想,可采用递归实现。贪婪的算法则是一步一步依据当前最优的策略,依靠每一步的局部最优,达到最终目标。但是他不一定能够得到最优解。原创 2016-01-11 15:25:11 · 8816 阅读 · 5 评论 -
哈弗曼树讲解---c语言实现
哈夫曼树哈弗曼树定义赫夫曼树:又称为最优二叉树,它是一类带权路径长度最短的二叉树。 Huffman树种,字符i的Huffman编码对应根到叶子结点i的路径。因为叶子结点是没有子孙结点的,故根到一个叶子结点的路径不可能是根到另一个叶子结点的路径的前一段,即一个叶子结点对应的字符的Huffman编码不是另一个叶子结点对应的字符的Huffman编码的前缀,从而没有一个字符的Huffman编码是另一个字符的Huffman原创 2016-01-10 22:46:31 · 1941 阅读 · 0 评论 -
字符串匹配--Sunday算法-C语言实现
字符串匹配Sunday算法sunday算法简介 Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率(算法思想很简单)。在一定程度上比KMP算法和BM算法更优。原创 2015-12-07 23:07:44 · 5632 阅读 · 0 评论 -
Boyer-Moore算法--C语言实现(简单易懂)
Boyer-Moore算法简介Boyer-Moore算法是1977年,Robert S.Boyer和J Strother Moore提出了另一种在O(n)时间复杂度内,完成字符串匹配的算法,其在绝大多数场合的性能表现,比KMP算法还要出色。KMP算法和BM算法,它们分别是前缀匹配和后缀匹配的经典算法。原创 2015-12-05 16:35:24 · 7837 阅读 · 3 评论 -
数据结构之--图的讲解与C语言实现
数据结构–图图是研究数据元素之间的多对多的关系。在这种结构中,任意两个元素之间可能存在关系。即结点之间的关系可以是任意的,图中任意元素之间都可能相关。图的应用极为广泛,已渗入到诸如语言学、逻辑学、物理、化学、电讯、计算机科学以及数学的其它分支。图的定义一个图(G)定义为一个偶对(V,E) ,记为G=(V,E) 。原创 2016-01-23 16:47:17 · 15437 阅读 · 1 评论 -
KMP算法--c语言实现
KMP算法字符串不回溯搜索词不断移位搜索词移位时查看是否有重复子串KMP算法过程 1. 首先,字符串”BBC ABCDAB ABCDABCDABDE”的第一个字符与搜索词”ABCDABD”的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 c语言实现原创 2015-12-03 11:02:27 · 29021 阅读 · 18 评论 -
二叉树的线索化
二叉树的线索化概念二叉树的遍历是将二叉树中结点按一定规律线性化的过程。当以二叉链表作为存储结构时,只能找到左右孩子信息,而不能直接得到结点在遍历序列中的前驱和后继信息。要得到这些信息有两个办法:1.将二叉树遍历一遍,在遍历过程中可得到前序和后继,2.充分利用二叉树中的空链表域,将遍历的过程中的结点的前驱和后继保存下来,实验证明第二种方法更优。原创 2016-01-03 20:44:41 · 1069 阅读 · 0 评论 -
二叉树遍历技巧
二叉树遍历技巧: 二叉树遍历访问路径是相同的, 只是访问结点的时机不同。 沿着图中的虚线出发,每个结点经过三次,第一次经过每个结点,访问每个结点,得到的序列就是先序遍历(ABDEFGC);第二次经过每个结点,访问每个结点,得到的序列就是中序遍历(DBFEGAC);第三次经过每个结点,访问每个结点,得到的序列就是后序遍历(DFGEBCA)。原创 2016-01-02 21:14:12 · 1488 阅读 · 0 评论 -
equal() and hashCode()方法
为什么重写equal()方法的时候通常需要重写hashCode()方法呢?原创 2016-11-14 22:50:33 · 604 阅读 · 0 评论