
数据结构
懒先森要努力
最淡的墨水也胜于最强的记忆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
轻松搞定面试中的链表题目
版权所有,转载请注明出处,谢谢!http://blog.youkuaiyun.com/walkinginthewind/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文转载 2013-03-04 09:16:56 · 450 阅读 · 0 评论 -
哈夫曼树
哈夫曼树( Huffman )又称最优二叉树,是一类带权路径长度最短的树,有着广泛的应用。 在讨论哈夫曼树之前首先需要弄清楚关于路径和路径长度的概念。树中两个结点之间的路径由一个结点到另一结点的分支构成。两结点之间的路径长度是路径上分支的数目。树的路径长度是从根结点到每一个结点的路径长度之和。 设一棵二叉树有 n 个叶子结点,每个叶子结点拥有一个权值W 1 ,W 2 , ......转载 2013-10-05 17:04:08 · 740 阅读 · 0 评论 -
平衡二叉树以及平衡二叉树旋转
形态匀称的二叉树称为平衡二叉树 (Balanced binary tree) ,其严格定义是: 一棵空树是平衡二叉树;若 T 是一棵非空二叉树,其左、右子树为 TL 和 TR ,令 hl 和 hr 分别为左、右子树的深度。当且仅当 ①TL 、 TR 都是平衡二叉树; ② | hl - hr |≤ 1;时,则 T 是平衡二叉树。【例】如图 8.4 所示。转载 2013-10-06 09:49:47 · 668 阅读 · 0 评论 -
打印二叉树的边缘节点
问题:给你一个complete 二叉树,逆时针打印所有边缘节点, 比如:那么,逆时针打印边缘节点后,输出:1 , 3, 5, 9, 8, 6 .分析:如果想写一个方法实现这个要求是很难的,但是,我们可以考虑分步实现。第一步:打印左边的边缘节点;第二步:打印底部所有节点;第三步:打印右边所有边缘节点。转载 2013-10-07 09:57:36 · 851 阅读 · 0 评论 -
字符串的全排列和组合算法
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。一、字符串的排列用C++写一个函数, 如 Foo(const char *转载 2013-10-06 21:39:46 · 597 阅读 · 0 评论 -
红黑树
红黑树基本概念 【维基百科】 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:转载 2013-10-06 19:26:19 · 624 阅读 · 0 评论 -
深度优先遍历与广度优先遍历
深度优先遍历1.深度优先遍历的递归定义 假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中转载 2013-10-06 21:15:53 · 895 阅读 · 0 评论 -
十大常用数据结构
一、栈: 1、后缀表达式的求值; 2、中缀到后缀表达式的转换; 3、深度优先搜索的非递归实现; 4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题的O(nlgn)算法。 二、队列: 1、树的层序遍历; 2、广度优先搜索; 3、Bellman-Ford算法的SPFA实现; 4、网络流中FF算法的Edmonds-Karp实现,以及Preflo转载 2013-10-06 21:16:21 · 669 阅读 · 0 评论 -
后缀数组、伴随数组
1、后缀数组 可参考http://dongxicheng.org/structure/suffix-array/ ,最简单的理解,后缀数组是“排第几的是谁?”,名次数组是“你排第几?”。关于后缀数组生成,参考专门算法。不列。常见笔试题(1) 可重叠最长重复子串。给定一个字符串,求最长重复子串,这两个子串可以重叠。『解析』只需要求height 数组里的最大值即可。转载 2013-10-06 21:52:44 · 790 阅读 · 0 评论 -
面试常考的常用数据结构与算法
数据结构与算法,这个部分的内容其实是十分的庞大,要想都覆盖到不太容易。在校学习阶段我们可能需要对每种结构,每种算法都学习,但是找工作笔试或者面试的时候,要在很短的时间内考察一个人这方面的能力,把每种结构和算法都问一遍不太现实。所以,实际的情况是,企业一般考察一些看起来很基本的概念和算法,或者是一些变形,然后让你去实现。也许看起来简单,但是如果真让你在纸上或者是计算机上快速地完成一个算法,并且设计测转载 2013-10-11 18:01:38 · 1149 阅读 · 0 评论 -
数据结构存储的顺序和链式对比
数据结构按逻辑结构可以分为集合、线性结构、非线性结构;按存储结构可以划分为顺序、链式、索引、散列存储结构。下面主要区分一下顺序和链式存储的优缺点,这是软考的知识点,分析记忆一下: 存储密度:顺序存储结构是一个一个挨着,基本上是一个空间对应一个数据;而链式存储由于每个结点都含有指针区域,故存储空间占用比较大,存储密度也就相对来说比较少。 容量转载 2013-10-04 20:36:43 · 1169 阅读 · 0 评论 -
数据结构之图
文章脉络图: 图由点集合和边集合组成,记做G=(V,E),其中点集合不能为空且应该有穷,边集合可以为空。在有关图的概念方面,大部分看名知意,只解释其中几个概念:有向图:边有方向,用表示;无向图:边没有方向,用(Vi,Vj)表示。完全图:每两个顶点之间都有连线,有向完全图的边有n(n+1)个;无向完全图有n(n+1)/2个边。路径和回路:路径是指从一个转载 2013-10-04 15:55:14 · 761 阅读 · 0 评论 -
二叉树的基本操作
头文件#include #include #include using namespace std; 二叉树结点typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; //左右孩子 }BiTNode,*BiTree; 建立二叉树转载 2013-03-01 22:08:26 · 493 阅读 · 0 评论 -
轻松搞定面试中的二叉树题目
版权所有,转载请注明出处,谢谢!http://blog.youkuaiyun.com/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树转载 2013-03-04 10:25:29 · 453 阅读 · 0 评论 -
常用排序算法总结
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。当待排序记录的关键字都不相同时,排序结果是惟一的,否则排序结果不惟一。在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。要注意的是,排序算法的稳定性是针对所有输入实例而言转载 2013-04-14 22:26:13 · 515 阅读 · 0 评论 -
字符串匹配的KMP算法
来源:阮一峰字符串匹配是计算机的基本任务之一。举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不转载 2013-05-03 21:23:30 · 443 阅读 · 0 评论 -
时间复杂度和空间复杂度——总结
Know Thy Complexities!Hi there! This webpage covers the space and time Big-O complexities of common algorithms used in Computer Science. When preparing for technical interviews in the past, I fo转载 2013-05-05 22:25:54 · 1068 阅读 · 0 评论 -
可视化的数据结构和算法
还记得之前发布过的那个关于可视化排序的文章吗?在网上又看到了一个旧金山大学David Galles做的各种可视化的数据结构和基本算法的主页,网址在这里,大家可以看看。我把这个页面的目录列在下面并翻译了一下,大家可以直接点击了。不知道国内的教育有没有相关的教学课件,至少在我大学的时候是没有的。基础Stack栈: 数组实现Stack栈: 链表实现Queues队列: 数组实现Qu转载 2013-05-14 20:26:47 · 690 阅读 · 0 评论 -
字符串“最”系列
最近练手,整理了一个“最”系列的主题,这些题目有点绕,个别的还有别名(详见博文),混在一块比较乱,就索性放在一起做了个整理,区别的时候要注意子序列与子串的不同,前者不要求连续,后者要求连续;由于大部分跟DP有关,而且一些题目还可以渐进寻求多种解法,可以用来做不错的练手。 下面是这些问题的博文目录===========================1=最长公共子序列(LCS转载 2013-09-18 11:06:24 · 495 阅读 · 0 评论 -
系统设计面试题分析
系统设计面试题分析应届生在面试的时候,大公司偶尔也会遇到一些系统设计题,而这些题目往往只是考一下你的知识面,或者对系统架构方面的了解,不会涉及编码。很多人感觉难以应对这样的题目,也不知道从何说起,在本文中,总结了回答这类题目需要哪些基础知识,以及怎样使用这些知识回答这些问题。在正式介绍基础知识之前,先罗列几个常见的系统设计相关的笔试面试题:(1)(百度)要求转载 2013-10-18 21:49:39 · 1171 阅读 · 0 评论