![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Lin-Cheng
这个作者很懒,什么都没留下…
展开
-
栈及栈的应用举例
第5章 栈1、前言2、栈的介绍和应用场景2.1 栈的基本介绍2.2 栈的应用场景3、栈的思路分析及实现3.1 数组模拟实现栈3.2 链表模拟实现栈4、栈实现计算器(中缀)4.1 思路分析4.2 代码实现1、前言先看一个例子,请输入一个表达式计算式:[7 * 2 * 25+1-5+3-3] 点击计算【如下图】请问: 计算机底层是如何运算得到结果的?注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),原创 2020-08-19 15:52:13 · 4227 阅读 · 0 评论 -
链表
第4章 链表1、链表的介绍2、单链表的实际应用2.1 结点添加2.2 结点删除2.3 结点修改2.3 结点查找、遍历3、课外扩展 单链表笔试题3.1. 求单链表中有效节点的个数3.2 查找单链表中的倒数第k个结点3.3 单链表的反转3.5 合并两个有序的单链表4、双向链表应用实例4.1 双向链表增删改查分析图解及实现4、单向环形链表应用场景4.1 约瑟夫(Josephu) 问题基本介绍4.2 约瑟夫问题思路分析与实现5、总结5.1 单向链表5.2 双向链表1、链表的介绍链表是有序的列表,但是它在内存原创 2020-08-17 20:36:23 · 159 阅读 · 0 评论 -
稀疏数组与队列
第3章 稀疏数组与队列1、前言1.1 数据结构和算法的重要性1.2 数据结构和算法的关系1.3 数据结构的基本结构2、稀疏数组2.1 稀疏数组的应用场景2.2 稀疏数组的介绍和说明2.3 二维数组转稀疏数组过程2.4 稀疏数组转换的思路分析及实现3、队列3.1 队列的应用场景和介绍3.2 数组模拟队列的思路分析及实现4、环形队列4.1 数组模拟环形队列思路分析4.2 数组模拟环形队列及实现1、前言1.1 数据结构和算法的重要性算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算。一般来原创 2020-08-12 20:45:14 · 208 阅读 · 0 评论 -
图的详解
第13章 图的介绍1、图的基本介绍和存储形式1、图的基本介绍和存储形式图基本介绍为什么要有图???前面我们学了线性表和树,线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个直接前驱也就是父节点。当我们需要表示多对多的关系时,这里我们就用到了图。 1 2 3图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:在这里插入图片描述在这里插入图片描述l图的常用概念:顶点(vertex转载 2020-08-11 15:46:54 · 1381 阅读 · 2 评论 -
多路查找树
第13章 多路查找树1、二叉树与B树2、多叉树3、B树的基本介绍4、2-3树基本介绍5、树、B+树和B*树5.1 B树的介绍5.2 B+树的介绍5.3 B*树的介绍1、二叉树与B树二叉树的问题分析二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树:二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响.问题转载 2020-08-04 19:40:00 · 119 阅读 · 0 评论 -
树的应用
12章 树的实际应用 二1、引言2、二叉排序树的介绍2.1 二叉排序树创建和遍历2.1 二叉排序树删除结点思路图解2.1.1 删除叶子节点2.1.2 删除只有一颗子树的节点2.1.3 删除只有二颗子树的节点1、引言先看一个需求:给你一个数列 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数据的查询和添加。解决方案分析:使用数组数组未排序,优点:直接在数组尾添加,速度快。缺点:查找速度慢.数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保原创 2020-08-04 18:08:40 · 232 阅读 · 0 评论 -
树结构的实际应用
第11章 树结构的实际应用1、堆排序1.1 堆排序的基本介绍1.2堆排序的思路图解与实现2、赫夫曼树2.1 赫夫曼树的基本介绍2.2 赫夫曼树创建步骤图解与实现1、堆排序1.1 堆排序的基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系(也就是说左右结点大小不原创 2020-08-02 10:06:55 · 1583 阅读 · 0 评论 -
二叉树
数据结构——树二叉树1、 数组 链表 树存储方式分析1.1 数组存储方式的分析1.2 链式存储方式的分析1.3 树存储方式的分析2、二叉树的概念和常用术语2.1 树的常用术语2.2 二叉树的概念2.3 前序 中序 后序遍历的二叉树原理2.4 二叉树遍历结点思路和实现(前 中 后序)2.5 二叉树查找结点思路和实现(前 中 后序)2.5 二叉树删除结点思路与实现(前 中 后序)3、顺序存储二叉树3.1 顺序存储二叉树的概念3.2 顺序存储二叉树的特点3.3 顺序存储二叉树的实现二叉树1、 数组 链表 树存原创 2020-07-28 16:17:02 · 146 阅读 · 0 评论 -
哈希表实现
哈希表哈希表的介绍和内存布局哈希表的图解,哈希表实现 案例案例思路图解哈希表的介绍和内存布局先看一个实际需求,google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息.要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位原创 2020-07-27 08:47:29 · 252 阅读 · 0 评论 -
查找算法
二分查找插入查找斐波那契查找原创 2020-06-20 16:12:26 · 165 阅读 · 0 评论 -
排序算法
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。原创 2020-06-19 17:55:17 · 324 阅读 · 0 评论 -
循环队列停车场案例
循环队列1.1 队列的应用场景排队买票、单向车道、排队取钱…2.2队列是一个有序列表,可以用数组或是链表来实现.队列遵循先进先出的原则。即:先进入的队列数据,要先取出,后存后取。3.3队列分析说明:尾索引的下一个为头索引是表示队列满,即将队列容量空出做一个约定 ,此时注意**(rear+1)%maxSize==front 队列满rear==front 队列空示意图 ...原创 2020-03-19 14:34:42 · 484 阅读 · 0 评论 -
递归
数据结构之递归递归递归的应用场景和调用机制递归的应用场景递归的概念递归的调用机制递归能解决的问题和规则递归能够干什么运用递归需要遵守的规则迷宫回溯问题分析和实现八皇后问题分析与实现(回溯算法)递归递归的应用场景和调用机制递归的应用场景先来看看实际应用场景 , 迷宫回溯问题 递归(Recursion)递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归的调用机制列举两个小案例,回顾一下递归调用机制1原创 2020-06-11 11:02:29 · 178 阅读 · 0 评论