
数据结构与算法分析
文章平均质量分 89
你好牛蛙
我是大帅比
展开
-
数据结构与算法分析----中序线索化二叉树+中序遍历
目录概述线索化二叉树的实现中序遍历构建中序线索化二叉树的遍历概述百度百科:在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。原二叉树的某些结点的左指针或右指针或左右指针是空的,浪费资源,我们可以让这些指针指向其他的一些结点,方便遍历和查找我们用某一种方式(前中后序)遍历二叉树,在某个结点前面打印的称为此结点的前驱结点,在这个结点后面打印的称为后继结点。我们线索化二叉树要做的就是让结点的空指原创 2021-11-23 10:43:35 · 3496 阅读 · 1 评论 -
数据结构与算法分析----二叉树+前序+中序+后序遍历
目录二叉树概述遍历先创建一个二叉树前序遍历中序遍历后续遍历代码二叉树概述知道单链表吧,单链表每个节点只能由一个后继节点。一个链表,假设他每个节点都可以有不多于两个的后继节点,那么他就可以被称为二叉树,此时,这个二叉树中的节点被称为结点,二叉树的后继结点又被称为子结点,且有着左右之分,一个结点的左边的子结点为左子结点,右边的为右子结点。如:源自百度百科这里的每个字母都代表着一个结点二叉树不一定要由链表实现,他是一种数据结构,是一种结构,只要有着这种结构的都可以称为二叉树百度百科:二叉树(Bin原创 2021-11-21 17:33:17 · 347 阅读 · 1 评论 -
数据结构与算法分析----斐波那契查找算法+二分查找算法+差值查找算法
文章目录二分查找和差值查找概述实现斐波那契查找概述二分查找和差值查找二分查找和差值查找法基本一样,仅在一处代码不同,合并到一起描述下面先讲二分查找概述二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。百度百科: 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字原创 2021-11-11 17:41:47 · 955 阅读 · 1 评论 -
数据结构与算法分析----八大排序(暂时缺少堆排序)
目录概述概述排序分为内部排序和外部排序:八大排序都属于内部排序八大常用排序:原创 2021-11-02 14:32:17 · 905 阅读 · 1 评论 -
数据结构与算法分析----哈希表
目录概述概述哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。来自百度百科...原创 2021-11-01 19:17:39 · 896 阅读 · 1 评论 -
数据结构与算法分析----递归回溯之迷宫和八皇后
目录递归概述借一个阶乘的例子来理解递归实现找到迷宫出口实现递归概述百度百科:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当原创 2021-09-30 15:48:59 · 819 阅读 · 2 评论 -
数据结构与算法分析----栈+中缀、后缀表达式(逆波兰表达式)+中后缀对应计算器的实现
文章目录栈概述用数组作为底层实现一个栈栈概述百度百科:栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。简单来说:就是一种先入后出的存储数据的容器。想象一下乌鸦喝水,瓶子就是栈,乌鸦投入的石子就是元素,投入的第一个石子直接到栈底,然原创 2021-09-09 11:09:38 · 815 阅读 · 1 评论 -
数据结构与算法分析----环形链表之约瑟夫问题的解决
文章目录环形链表概述环形链表的简单实现约瑟夫问题的解决测试环形链表概述循环链表是另一种形式的链式存储结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。环形链表的简单实现节点的设计:和普通的单链表一样链表的功能实现类:这里仅简单的实现一个环形链表,add方法接受一个整形的参数,用于设置链表有几个节点,用for循环,依次创建节点,节点名称固定,标号按照从1到整形参数k来设置在每次创建新节点后,将其加入链表,如果链表中没有数据,则,将第一个节点设置为第一个结点,即first原创 2021-09-02 10:18:12 · 489 阅读 · 1 评论 -
(基于Java)数据结构与算法分析----单链表+双向链表
单链表概述插入节点(创建)修改删除打印链表测试所有代码注意事项概述百度百科:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。简单来说,链表就是,把一个一个的数据集给串起来,然后形成的串串。数据集在链表中就称为节点Java中的链表和C语言的比较类似,不过这里我们不需要使用指针节点:链表是由节点组成的,一个原创 2021-07-28 17:25:17 · 439 阅读 · 2 评论 -
数据结构与算法分析----队列
文章目录概述单次性的顺序队列总代码:循环队列全部代码概述百度百科:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称原创 2021-07-18 18:08:20 · 721 阅读 · 2 评论 -
数据结构与算法分析----稀疏数组
文章目录概述什么是稀疏数组应用场景一个简单例子的实现创建稀疏数组根据稀疏数组把二维数组还原全部代码:概述什么是稀疏数组在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。应用场景用于对某一二维数组(矩阵)进行压缩。如,这样一个二维数组:十一行十一列,仅有两个有效数值,其他均为零,此时我们便可使用稀疏数组对其进行压缩。即,首先得原创 2021-07-07 17:41:51 · 171 阅读 · 1 评论