小甲鱼数据结构与算法视频教程学习笔记分享
文章平均质量分 74
本专栏是针对小甲鱼的《数据结构和算法》视频教程的所有内容和知识做一个汇总,将我从一个学生的视角上进行学习笔记的整理,希望可以帮助到一定的学生更加深刻地理解数据结构和算法。同时也是对自我学习的一个总结,希望与各位博友相互交流,还希望各位博友多多指导,我们一起进步。
huangchijun11
本人从事于网站开发,信号与信息处理等相关工作,项目经历有语音信号的处理、智能信息管理监控系统、基于百度地图的车联网信息系统等,本人对技术的研究有一定的兴趣,希望可以在技术上一步一步地慢慢提高,在一个领域做到顶尖。
展开
-
《数据结构和算法》之最小生成树
一,最小生成树 图1 搭建网络图原创 2017-03-20 13:10:44 · 812 阅读 · 0 评论 -
《数据结构和算法》之图的广度优先遍历
一,广度优先遍历,又称为广度优先搜索,简称BFS。举例说明,在一套房子里找一个钥匙,利用深度优先搜索就是搜索每一个房间,而广度优先搜索,是先看看钥匙有没有放在各个房间的明显位置,如果没有,再看看各个房间的抽屉有没有,这样逐步扩大查找的范围的方式我们称之为广度优先搜索。原创 2017-03-20 09:06:45 · 969 阅读 · 0 评论 -
《数据结构和算法》之二叉树
一,二叉树 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对原创 2017-03-15 14:34:53 · 707 阅读 · 0 评论 -
《数据结构和算法》之KMP算法
一,KMP算法 KMP算法,全称就是克努特-莫里斯-普拉特算法,是为了避免大量的重复遍历的情况。原创 2017-03-14 17:41:47 · 851 阅读 · 0 评论 -
《数据结构和算法》之符号匹配性检测
一,问题描述: 在C语言中有一些符号是成对出现的,括号:(),【】,{},《》,二,问题分析: 可能猛的看到这个题目都不知道要怎么做,但仔细分析之后可以发现可以从以下这个思路来进行解答: 1,从第一个字符开始扫描,当遇见普通字符时忽略,当遇见左符号时压入栈中; 2,当遇见右符号时就从栈中弹出栈顶符号进行匹配,如果匹配成功则原创 2017-03-13 17:59:02 · 4332 阅读 · 1 评论 -
《数据结构和算法》之字符串BF算法
一,定义: 串是由零个或者多个字符组成的有限序列,又名字符串。一般记为 s=“a1a2a3a4......an”(n>0),串可以是空串,即没有字符,直接由 “”表示,或者可以由希腊字母来表示。 子串和主串,例如“china”是“chinaboy”的子串,反之则倒过来。字符串比较大小要怎么比较呢,这个时候比的就是字符串里每个字符的ASCII码的大小,因为‘F’=原创 2017-03-12 15:49:23 · 2147 阅读 · 0 评论 -
《数据结构和算法》之八皇后问题
一,问题描述 八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是在十九世纪著名的数学家高斯1850年提出的:在8*8格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一行、同一列或者同一斜线上,问有多少种摆法。二,问题分析原创 2017-03-11 16:46:54 · 3465 阅读 · 1 评论 -
《数据结构和算法》之汉诺塔
一,问题描述: 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天原创 2017-03-11 09:24:38 · 2617 阅读 · 0 评论 -
《数据结构和算法》之递归(斐波那契数列)
一,递归 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一原创 2017-03-10 17:04:25 · 4698 阅读 · 0 评论 -
《数据结构和算法》之队列的顺序存储结构
在上一篇博文中已经介绍了队列的链式存储结构,这里将介绍顺序存储结构一,队列的定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)原创 2017-03-10 16:02:01 · 635 阅读 · 0 评论 -
《数据结构和算法》之中缀表达式、后缀表达式转换
一,在上篇博文中讨论了逆波兰表达式的计算问题,在这里讨论一下中缀表达式如何转换为后缀表达式 问题示例:如何将1+(2-3)*4+10/5 转换为后缀表达式 1 2 3 - 4 * + 10 5 / +这样的输出 问题分析: 第一步,首先遇到第一个输入是数字1,数字在后缀表达式中都是直接输出,接着是符号“+”入栈原创 2017-03-09 17:44:01 · 32529 阅读 · 10 评论 -
《数据结构和算法》之队列的创建、入列和出列
一,队列的定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一原创 2017-03-09 16:10:27 · 4808 阅读 · 1 评论 -
《数据结构和算法》之逆波兰表达式
一,波兰表达式的定义 什么是波兰表达式。可能很多人会有一个疑问,这里举个例子说明一下,对于(1-2)*(4+5)这个表达式的结果,我相信很多人就异口同声地说出来肯定是-9,但是对于机器语言是怎样实现的。这个时候机器语言就需要一定的规则和复杂性来解决这个问题。波兰逻辑学家发明了一种不需要括号的后缀表达式,我们通常称之为波兰表达式(RPN)。 对于(1-2)*原创 2017-03-08 19:32:14 · 1051 阅读 · 0 评论 -
《数据结构和算法》之栈的链式存储结构
在上篇博文中我已经将栈的顺序存储结构简单地介绍了一下,也举了一个进制转换的例子,供大家学习参考。这里将继续进行栈的有关介绍,本篇博文重点对栈的链式存储结构进行分析。一,栈的链式存储结构 栈的链式存储结构简称栈链。栈因为只是栈顶来做插入和删除操作,所以比较好的方法就是将栈顶放在单链表的头部,栈顶指针和单链表的头指针合二为一。原创 2017-03-08 16:27:49 · 848 阅读 · 0 评论 -
《数据结构和算法》之栈的创建、插入和取出 二进制转换成十进制
一,栈的定义: 1,官方定义:栈是一个后进先出的线性表,它要求只在表尾进行删除和插入操作。 2,通俗来讲,所谓的栈,其实就是一个特殊的线性表(顺序表、链表),但是它在操作上有些特殊的限制和要求: -- 栈的元素必须“后进先出” -- 栈的操作只能在这个线性表的表尾进行。 -原创 2017-03-08 10:33:06 · 466 阅读 · 0 评论 -
《数据结构和算法》之双向链表问题实践
1,问题描述: 要求实现用户输入一个数使得26个字母的排列发生变化,例如用户输入3,使得结果为:DEFHIJKLMNOPQRSTUVWXYZABC,同时需要支持负数,使得输入-3时,结果为:XYZABCDEFGHIJKLMNOPQRSTUVW。很明显这是一个双向循环链表的问题,可以实现双向移动位置。2,思路分析 首先定义一个结构体: typede原创 2017-03-07 11:50:48 · 751 阅读 · 0 评论 -
《数据结构和算法》之双向链表
1,双向链表的定义: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 怎样理解双向链表,用生活中的一个例子来解释一下:最开始的火车是只有一个火车头的,当一辆火车从A->B->C->D->E->F->G->原创 2017-03-07 10:30:07 · 494 阅读 · 0 评论 -
魔术师发牌问题
一,问题描述:魔术手中有13张牌,都是黑桃的,第一张牌翻过来是黑桃A,也就是1,因为他正确了,所以放在桌面上,第二张牌我们必须翻出2,但是魔术师会数两张牌,第一张放在牌的最低端,第二张翻出来刚好是2,又把它放在桌面上,接着魔术师会数三张牌,按顺序数,第一张放在牌的最低端,第二张放在牌的最低端,第三张翻开来,刚好是3,放在桌面上,以此类推把所有的牌都数完了,刚好是从1到13,即为1、2、3、4、5、原创 2017-03-05 16:05:40 · 602 阅读 · 0 评论