自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

转载 树、森林及二叉树的相互转换 – 数据结构和算法50

树、森林及二叉树的相互转换 让编程改变世界Change the world by program 树、森林及二叉树的相互转换 从一个屌丝逆袭高富帅的小故事说起。 在这一章节开始的时候我们是从一棵普通的树开始介绍,在满足树的条件下可以是任意形状,一个结点可以有任意多个孩子,这样对树的处理显然要复杂很多。 所以

2015-11-19 14:30:22 1728

转载 线索二叉树 – 数据结构和算法48

线索二叉树 让编程改变世界Change the world by program 线索二叉树 为什么需要线索二叉树呢?我想正如程序猿发觉单链表并不总能满足他们设计的程序某些要求的时候,发明了双向链表来弥补一样,线索二叉树也是在需求中被创造的! 那普通的二叉树到底有什么缺陷让我们发指呢?一,浪费空间二

2015-11-16 17:50:12 692

转载 二叉树的建立和遍历算法 – 数据结构和算法47

二叉树的建立和遍历算法 让编程改变世界Change the world by program 有童鞋会说,我们上节课研究这么多遍历的方法干啥呢?聪明的鱼油们怎么看?!对于二叉树,思路方面我们已经谈得够多了,是时候由小甲鱼带大家来上机操作。 题目要求:建议二叉树并输出每个字符所在的层数。如右图要求输出A在第一层

2015-11-16 17:49:31 516

转载 二叉树的遍历 – 数据结构和算法46

二叉树的遍历 让编程改变世界Change the world by program 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。这里有两个关键词小甲鱼给加红了:次序和访问 二叉树的遍历次序不同于线性结构,线性结构最多也就是

2015-11-16 17:48:49 450

转载 二叉树的存储结构 – 数据结构和算法45

二叉树的存储结构 让编程改变世界Change the world by program 二叉树的存储结构 树结构在计算机中的存储形式很多,可谓天马行空任你创造,只要能够按照要求完成任务即可。在前边的演示中,我们发觉很难单单只用顺序存储结构或者链式存储结构来存放。但是二叉树是一种特殊的树,由于它的特殊性,使得用顺序存储结构或

2015-11-16 17:47:57 674

转载 二叉树2 – 数据结构和算法44

二叉树2 让编程改变世界Change the world by program 二叉树的性质 二叉树的性质一:在二叉树的第i层上至多有2^(i-1)个结点(i>=1)这个性质其实很好记忆,考试的时候懂得画出二叉树的图便可以推出 二叉树的性质二:深度为k的二叉树至多有2^k-1个结点(k>=1)这里一

2015-11-16 17:47:16 427

转载 二叉树 – 数据结构和算法43

二叉树 让编程改变世界Change the world by program 二叉树的定义 世上树有万千种,唯有二叉课上讲。这里的二叉是二叉树,因为二叉树使用的范围最广,最具有代表意义,因此我们重点讨论二叉树。二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不

2015-11-16 17:46:06 412

转载 树的存储结构2 – 数据结构和算法42

树的存储结构 让编程改变世界Change the world by program 孩子表示法 我们这次换个角度来考虑,由于树中每个结点可能有多棵子树,可以考虑用多重链表来实现。就像我们虽然有计划生育,但我们还是无法确保每个家庭只养育一个孩子的冲动,那么对于子树的不确定性也是如此。 1. 右图中,树的度为( )

2015-11-16 17:45:22 352

转载 树的存储结构 – 数据结构和算法41

树的存储结构 让编程改变世界Change the world by program 树的存储结构 不好意思哈,这节课又需要大家搞脑子了。对于知识,你理解的越多,需要记住的就越少!上节课我们简单的介绍了树结构的强大,这节课我们来关心一下如何在内存中安排树这种结构的存放。 说到存储结构,就会想到我们前面章节讲过的顺序存

2015-11-16 17:44:39 465

转载 树 – 数据结构和算法40

树 让编程改变世界Change the world by program  树结构 之前我们一直在讨论的是一对一的线性结构,无论是线性表也好,栈和队列也罢,都是2P模式。可现实生活中,3P、4P等现象比比皆是,例如一个年轻的妈妈生了4个孩子,而每个孩子都不像他们的爸爸,那么这类情况我们用

2015-11-16 17:43:36 373

转载 KMP算法之最终实现及优化 – 数据结构和算法39

KMP算法之最终实现及优化 让编程改变世界Change the world by program KMP算法之最终实现及优化 搞定了NEXT数组,KMP算法就易如反掌了。一起来完成:kmp.c KMP模式匹配算法改进 后来有人发现,KMP算法是有缺陷的。比如我们的主串 S =“aaaabcde”,子

2015-11-16 17:42:58 384

转载 KMP算法之NEXT数组代码原理分析 – 数据结构和算法38

KMP算法之NEXT数组代码原理分析 让编程改变世界Change the world by program KMP算法之NEXT数组代码原理分析 NEXT数组:当模式匹配串T失配的时候,NEXT数组对应的元素指导应该用T串的哪个元素进行下一轮的匹配。 i(后缀)= 1 2 。3 4 5 6 7 。8 9j(

2015-11-16 17:41:07 552

转载 KMP算法(养成篇2) – 数据结构和算法37

KMP算法(养成篇2) 让编程改变世界Change the world by program KMP算法之养成篇 为了照顾广大喜欢细嚼慢咽的朋友,小甲鱼再添加一讲继续深入探讨思路。这次我们给模式匹配串添加一个k数组(也就是KMP算法中非著名的next数组)。这是一个“智能”的数组,因为他指导着模式匹配串下一步改用第几号元素

2015-11-16 17:40:25 433

转载 KMP算法(养成篇) – 数据结构和算法36

KMP算法(养成篇) 让编程改变世界Change the world by program KMP算法 相信很多鱼油(包括小甲鱼自己)在刚开始接触KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。 KMP算

2015-11-16 17:39:17 529

转载 字符串 – 数据结构和算法35

字符串 让编程改变世界Change the world by program 字符串 以前的计算机刚被发明的时候,主要作用是做一些科学和工程的计算工作,科学家发明计算机的时候压根儿不可能想到后人还可以用来看毛片。刚开始的计算机都是处理数值工作,后来引入了字符串的概念,计算机开始可以处理非数值的概念了(当然原理还是用数值来模拟非数值

2015-11-16 17:38:26 484

转载 递归和分治思想4|八皇后问题 – 数据结构和算法34

递归和分治思想4:八皇后问题 让编程改变世界Change the world by program 八皇后问题(递归解法) 八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题(这节课小甲鱼先用递归算法来解)。 该问题是十九世纪著名的数学家高斯1850年提出: 

2015-11-16 17:37:42 750

转载 递归和分治思想3|汉诺塔 – 数据结构和算法33

递归和分治思想3:汉诺塔 让编程改变世界Change the world by program 汉诺塔 一位法国数学家曾编写过一个印度的古老传说:在世界中心贝拿勒斯的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一

2015-11-16 17:36:57 574

转载 递归和分治思想2 – 数据结构和算法32

递归和分治思想2 让编程改变世界Change the world by program 递归定义 在高级语言中,函数自己调用和调用其他函数并没有本质的不同。我们把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。 不过,写递归程序最怕的就是陷入永不结束的无穷递归中。切记,每个递归定义必须至少

2015-11-16 17:35:34 544

转载 递归和分治思想1 – 数据结构和算法31

递归和分治思想1 让编程改变世界Change the world by program 递归 妹子,甲鱼哥今天给你讲一个故事吧,从前我有个小弟,酷爱探险,有一次他进了一个山洞,然后又出来,然后又进去,然后又出来,然后又进去,然后又出来。。。。。。后来他很开心~艹,你说什么呢?妹子悟性真高^_^ 事实上递归就

2015-11-16 17:34:30 532

转载 栈和队列8 – 数据结构和算法30

栈和队列8 让编程改变世界Change the world by program 队列的顺序存储结构 为什么小甲鱼上节课说队列的实现上我们更愿意用链式存储结构来存储?我们先按照应有的思路来考虑下如何构造队列的顺序存储结构,然后发掘都遇到了什么麻烦。我们假设一个队列有n个元素,则顺序存储的队列需建立一个大于n的存储单元,并把

2015-11-16 17:31:41 413

转载 栈和队列7 – 数据结构和算法29

栈和队列7 让编程改变世界Change the world by program 神马是队列 这就是队列队列 这不是队列队列的定义 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。与栈相反,

2015-11-16 17:28:25 379

转载 栈和队列6|中缀表达式转换为后缀表达式 – 数据结构和算法28

栈和队列6:中缀表达式转换为后缀表达式 让编程改变世界Change the world by program 课前谈一谈 今天我们课前谈一谈,要说点什么好呢?最近小甲鱼发现,很多鱼油在学习数据结构和算法的时候积极性已经开始有点下降了。甚至很多朋友怀疑数据结构和算法到底有没有用?实话说,在大厦的防震设计、消除疾病、防止水源枯

2015-11-16 17:24:55 855

转载 栈和队列5|逆波兰计算器 – 数据结构和算法27

栈和队列5:逆波兰计算器 让编程改变世界Change the world by program 逆波兰计算器 这节课小甲鱼带大家一起写一个逆波兰计算器,需要实现以下要求:实现对逆波兰输入的表达式进行计算。支持带小数点的数据。 正常的表达式 —> 逆波兰表达式a+b —> a b +a

2015-11-16 17:23:57 374

转载 栈和队列4 – 数据结构和算法26

栈和队列4 让编程改变世界Change the world by program 栈的链式存储结构 讲完了栈的顺序存储结构,也给大家结合了一些例题演练,相信大家对栈再也不陌生了吧?现在我们来看下栈的链式存储结构,简称栈链。(通常我们用的都是栈的顺序存储结构存储,链式存储我们作为一个知识点,大家知道就好!)栈因为只是栈顶来做

2015-11-16 17:23:11 364

转载 栈和队列3|进制转换 – 数据结构和算法25

栈和队列3:进制转换 让编程改变世界Change the world by program 从二进制到八进制 地球人都知道,我们学习编程常常会接触到不同进制的数,而最多的就是二进制、八进制、十进制、十六进制。鱼C人还知道,二进制是计算机唯一认识的,十进制是人们通常使用的。 那么,有没有谁知道八进制和十六进制呢?为什

2015-11-16 17:22:21 766

转载 栈和队列2 – 数据结构和算法24

栈和队列2 让编程改变世界Change the world by program 疑问解释 上节课我们讲解栈的结构,我们是这样声明的:typedef int ElemType; typedef struct{ ElemType *base; ElemType *top; int stackSize;}sqStack;

2015-11-16 17:20:47 479

转载 栈和队列1 – 数据结构和算法23

栈和队列 让编程改变世界Change the world by program 栈和队列 栈和队列 栈的定义 栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式。就像我们刚才的例子,栈这种后进先出的数据结构应用是非常广泛的。 在生活中,例如我们的浏览器

2015-11-16 17:20:00 410

转载 线性表17 – 数据结构和算法22

线性表17 让编程改变世界Change the world by program 双向循环链表实践 课堂演示题目: 要求实现用户输入一个数使得26个字母的排列发生变化,例如用户输入3,输出结果:DEFGHIJKLMNOPQRSTUVWXYZABC同时需要支持负数,例如用户输入-3,输出结果:XY

2015-11-16 17:19:16 390

转载 线性表16:双向链表 – 数据结构和算法21

线性表16 : 双向链表 让编程改变世界Change the world by program  这货我们地球人把他称为火车,有了它,全世界每年春季最大规模的物种迁移才会发生在中国! 双向链表 大家都知道,任何事物出现的初期都显得有些不完善。例如我们的火车刚发明的时候是只有一个“头”的,所以如果它走的线路是

2015-11-16 17:18:15 465

转载 线性表15|魔术师发牌问题和拉丁方阵 – 数据结构和算法20

线性表15 : 魔术师发牌问题和拉丁方阵 让编程改变世界Change the world by program 题外话 今天小甲鱼看到到微博有朋友在问,这个《数据结构和算法》系列课程有木有JAVA版本的?因为这个问题之前也有一些朋友问过,所以咱在这里统一说下哈。 这个你要这么想,我们怀着民族情结看日本AV的时候,我

2015-11-16 17:16:09 668

转载 线性表14 – 数据结构和算法19

线性表14 让编程改变世界Change the world by program 循环链表的特点 回顾一下,在单链表中,我们有了头结点时,我们可以用O(1)的时间访问第一个结点,但对于要访问最后一个结点,我们必须要挨个向下索引,所以需要O(n)的时间。大家猜的没错,如果用上今天我们学习到的循环链表的特点,用O(1)的时间就可以由链

2015-11-16 17:15:10 468

转载 线性表13|约瑟夫问题 – 数据结构和算法18

线性表13:约瑟夫问题 让编程改变世界Change the world by program 约瑟夫问题 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第

2015-11-16 17:06:05 899

转载 线性表12|循环链表 – 数据结构和算法17

线性表12:循环链表 让编程改变世界Change the world by program 循环,顾名思义就是:绕。 打个比方,就是从前山上有座庙,庙里有个老和尚和一个小和尚,有一天老和尚对小和尚说“从前山上有座庙,庙里有个老和尚和一个小和尚,有一天老和尚对小和尚说“从前 。。。。。。 对于单链表,由于每个结点只存

2015-11-16 17:05:22 540

转载 线性表11|单链表小结:腾讯面试题 – 数据结构和算法16

线性表11|单链表小结:腾讯面试题 让编程改变世界Change the world by program 静态链表的删除操作 我们的故事还没结束,小C看到小A和2B这样非法的勾当,内心觉得很不爽,一句话也不说就离开了队伍。。。。。。我们先在图上实践一下,然后研究代码: 静态链表的删除操作代码:L

2015-11-16 17:04:26 962

转载 线性表10 – 数据结构和算法15

线性表10 让编程改变世界Change the world by program 静态链表的插入操作 上节课我们说到,为了辨明数组中哪些分量未被使用,解决的方法是将所有未被使用过的及已被删除的分量用游标链成一个备用的链表。每当进行插入时,便可以从备用链表上取得第一个结点作为待插入的新结点。 可能这样说大家都还是难以

2015-11-16 17:03:20 393

转载 线性表9 – 数据结构和算法14

线性表9 让编程改变世界Change the world by program 静态链表 这一节课,我们试图通过静态链表的讲解来瞻仰古人的伟大!(似乎人总要挂了之后才能变得伟大~_~)神马是静态链表呢?又跟古人能有半毛钱关系? 地球人都知道C语言是个伟大的语言,他的魅力在于指针的灵活性,使得它可以非常容易地操作内存

2015-11-16 17:01:56 496

转载 线性表8 – 数据结构和算法13

线性表8 让编程改变世界Change the world by program 单链表的整表删除 当我们不打算使用这个单链表时,我们需要把它销毁(真狠,不要就给别人嘛,还销毁~)。其实也就是在内存中将它释放掉,以便于留出空间给其他程序或软件使用。 单链表整表删除的算法思路如下:声明结点p和q;将

2015-11-16 17:01:19 436

转载 线性表7 – 数据结构和算法12

线性表7 让编程改变世界Change the world by program 单链表的整表创建 对于顺序存储结构的线性表的整表创建,我们可以用数组的初始化来直观理解。而单链表和顺序存储结构就不一样了,它不像顺序存储结构数据这么集中,它的数据可以是分散在内存各个角落的,他的增长也是动态的。 对于每个链表来说,它所占

2015-11-16 16:57:40 371

转载 线性表6 – 数据结构和算法11

线性表6 让编程改变世界Change the world by program 单链表的插入 我们先来看下单链表的插入。假设存储元素e的结点为s,要实现结点p、p->next和s之间逻辑关系的变化,大家参考下图思考一下:单链表的插入 我们思考后发觉根本用不着惊动其他结点,只需要让s->next和p->n

2015-11-16 16:56:32 439

转载 线性表5 – 数据结构和算法10

线性表5 让编程改变世界Change the world by program 头指针与头结点的异同 上节课我们提到了,头结点的数据域一般不存储任何信息,谁叫它是第一个呢,有这个特权。拿个小旗子即可:头指针与头结点的异同 那有童鞋就疑惑了,既然头结点的数据域不存储任何信息,那么头指针和头结点又有

2015-11-16 16:55:38 546

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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