★ 数据结构
空
贝贝今天AC了吗
这个作者很懒,什么都没留下…
展开
-
填坑Ⅱ | 简单的数据结构
20. 填坑Ⅱ成绩 10 开启时间 2020年09月17日 星期四 12:00 折扣 0.8 折扣时间 2020年09月24日 星期四 12:00 允许迟交 否 关闭时间 2020年10月10日 星期六 23:00 Descriptionemmm,还是北湖深坑,不用惊喜,不用意外。我们继续用石头填!北湖的地面依旧是一维的,每一块宽度都为1,高度是非负整数,用一个数组来表示。还是提供不限量的1x2规格的石头。但是这一次是 Da.原创 2020-09-19 01:48:10 · 3011 阅读 · 0 评论 -
填坑Ⅰ | 简单的数据结构
19. 填坑Ⅰ成绩 10 开启时间 2020年09月17日 星期四 12:00 折扣 0.8 折扣时间 2020年09月24日 星期四 12:00 允许迟交 否 关闭时间 2020年10月10日 星期六 23:00 Description又是北湖深坑,惊不惊喜,意不意外?!Rack觉得用水填湖太没意思了,用石头填坑多有意思。假设北湖的地面还是一维的,每一块宽度都为1,高度是非负整数,用一个数组来表示。现提供不限量的1x2规格的石.原创 2020-09-19 00:59:12 · 3192 阅读 · 2 评论 -
Graph | 单源最短路径:Bellman-Ford算法 与 Dijkstra算法
单源最短路径问题:在图G<V,E,W>中,计算起始点 s 到图内每个节点v 的最短路径长度(边权重之和)。1、问题概述首先,最短路径具有 OSP 最优子结构性质:最短路径中的子路径也是最短路径。????有一个特殊点说明:如果图 G 内包含从 s 可以到达的权重为负值的环路(负环),则计算最短路径是无意义的。且不失一般性,我们可以认为最短路径上是没有环路的,即全是简单...原创 2020-04-27 13:18:52 · 742 阅读 · 0 评论 -
【纯干货】清晰易懂!数据结构学霸笔记!此文实在!(收藏!备忘!复习!)
写在前面:大家好,我是贝贝。昵称 "贝贝今天AC了吗" 是为了督促自己码题,相信圈子里的大家伙都懂喇。我热爱技术、热爱开源、热爱编程。我始终相信:技术是开源的,知识是共享的。博客内均是我平常学习的总结,在便于自己往后回顾之余,也希望向大家分享知识。每篇文章我都是负责任地总结着,相信您看几篇文章就会发现我的乖巧。目前在总结比较基础入门的知识。如果喜欢,不妨关注,我们...原创 2020-01-31 18:32:44 · 6979 阅读 · 1 评论 -
Heaps | 优先队列
本文目录一、优先队列的基本概念二、优先队列的实现原理三、优先队列的代码实现1、优先队列的结构2、初始化优先队列3、插入元素4、删除最小元素End一、优先队列的基本概念对于可以实现以下两种操作的数据结构:1、Insert:插入新元素2、DeleteMin:(快速)找到、返回并删除一个元素我们称之为优先队列(Priority Queues)...原创 2020-01-17 02:00:59 · 1017 阅读 · 0 评论 -
Tree | B树
一、B树的概念大多数的查找树都是二分的,如二叉查找树、AVL树、伸展树等,但是有一种查找树不一定是二分的,它就是B树 ——多路平衡查找树。B树首先是查找树,所以肯定要满足有序性。B树是分阶的,对于一个M阶的B树有如下规定:根节点若不是叶子节点,则必须有 2~M 个孩子节点 除根节点外,每个非叶子节点必须有 M / 2(向上取整)~ M个孩子节点 每个叶子节点高度相等下...原创 2020-01-16 18:02:13 · 511 阅读 · 0 评论 -
Tree | 伸展树
本文目录一、伸展树的基本概念二、Splay —— 伸展操作的原理1、P 是根节点2、P 不是根节点Z字型旋转(Zig-zag)一字型旋转(Zig-zig)—— 左一字型旋转(Zig-zig)—— 右三、伸展操作的实现四、利用伸展树实现其他操作1、Find(x,S)2、Insert(x,S)3、Delete(x,S)4、Join(S1,S2)...原创 2020-01-16 16:42:04 · 546 阅读 · 0 评论 -
Tree | AVL树定义、调整、建立与删除
本文目录一、AVL树的基本概念1、二叉查找树的弊端2、AVL树 —— 优化二叉查找树二、AVL树的定义三、AVL树的调整????单旋转 —— 破坏节点与插入节点共线时1、左旋转(L)2、右旋转(R)????双旋转 —— 破坏节点与插入节点不共线3、左右旋转(LR)4、右左旋转(RL)三、AVL树的建立四、删除操作一、AVL树的基本概念1、二叉查...原创 2020-01-16 01:30:43 · 1007 阅读 · 0 评论 -
Tree | 二叉查找树 —— 建立、查找、删除、懒惰删除
本文目录一、二叉查找树的基本概念二、二叉查找树的建立1、二叉查找树的结构2、二叉查找树的建立三、二叉查找树的其他操作1、查找元素2、查找最小元素3、查找最大元素4、删除元素四、一点补充懒惰删除(Lazy Deletion):一、二叉查找树的基本概念二叉查找树是一种特殊的二叉树,在查找的应用中很重要。其在二叉树的基础上有如下规定:对...原创 2020-01-15 01:36:51 · 1161 阅读 · 0 评论 -
Tree | 二叉树 —— 定义、建立与(先序、后序、中序、层次)遍历
本文目录一、二叉树的基本概念二、二叉树的定义三、二叉树的建立四、二叉树的遍历1、先序遍历2、中序遍历3、后序遍历4、层次遍历一、二叉树的基本概念二叉树是一棵特殊的树:每一个节点最多有两个孩子节点。我们分别把他们称为左孩子、右孩子。树的定义是递归的,二叉树的抽象结构如下图所示:二、二叉树的定义最基本的二叉树的节点,有三个域:数...原创 2020-01-13 20:37:05 · 866 阅读 · 1 评论 -
Tree | 一般树 —— 概念、建立与凹进输出
目录一、树的基本概念1、树的结构:2、树一些名词解释:二、一般树的实现1、树的结构2、树的建立3、树的输出打印某个节点的函数如下:整个树的打印递归实现:End一、树的基本概念树是一种数据结构,由n(n>=0)个有限结点组成一个有层次关系的集合。由于形状像一颗倒立的树而得名。当n=0时称为空树,非空树的特征如下:(1...原创 2020-01-13 14:44:04 · 1923 阅读 · 0 评论 -
Queue | 循环队列的数组实现
目录一、概述1、队列ADT2、队列的基本操作3、队列的实现方式二、队列的数组实现1、队列的结构2、清空队列3、创建一个初始化队列4、判断队列是否满5、入队6、判断队列是否为空7、出队操作一、概述1、队列ADT队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(Firs...原创 2020-01-11 21:38:08 · 1415 阅读 · 0 评论 -
【数据结构】约瑟夫问题(单项循环链表)
约瑟夫问题 (本题要求用循环链表实现)约瑟夫问题是一个经典的问题。已知n个人(不妨分别以编号1,2,3,…,n 代表 )围坐在一张圆桌周围,从编号为 k 的人开始,从1开始顺时针报数1, 2, 3, …,顺时针数到m 的那个人,出列并输出。然后从出列的下一个人开始,从1开始继续顺时针报数,数到m的那个人,出列并输出,…依此重复下去,直到圆桌周围的人全部出列。输入:n, k, m输出:按照出列...原创 2019-10-23 13:12:59 · 922 阅读 · 1 评论 -
List | 链表实现表(单向链表)
List 表一、概述表 (List ADT):我们把一连串数字的排列这种数据类型称为表。比如:A1,A2,A3,A4…An这一组数,我们可以称它为大小为n的表。大小为0的表我们称之为空表(empty lists)。对于一般的表,我们称An为An-1的后继元(successor),An为An+1的前驱元(predecessor)。其对应操作有:PrintListMakeEmptyFi...原创 2020-01-09 00:23:24 · 1450 阅读 · 0 评论 -
List | 双向链表
Doubly Linked Lists | 双向链表目录 | Content要在单向链表中找到某个节点的前驱节点,必须从链表的头节点出发依次向后寻找,但是需要Ο(n)时间。为此我们可以扩展单向链表的节点结构,使得通过一个节点的引用,不但能够访问其后续节点,也可以方便的访问其前驱节点。该链表称为双向链表。单向链表只能从一个方向遍历,双向链表可以从两个方向遍历。一、声明链表节点扩展单向链...原创 2020-01-09 00:17:02 · 481 阅读 · 0 评论 -
List | 静态链表 —— 游标实现
目录一、概述1、动态链表2、静态链表二、具体实现1、要有一个全局的结构体数组2、让CursorSpace数组中的单元代替malloc和free的职能Ⅰ.malloc的模拟实现Ⅱ.free的模拟实现三、其他操作一、概述1、动态链表以前学习的各种链表都是由指针实现的,链表中结点的分配和回收(即释放)都是由系统提供的标准函数malloc和f...原创 2020-01-11 16:25:37 · 1261 阅读 · 0 评论 -
List | 多项式求和 / 积
多项式 ADT目录一、概述一元多项式,我们一般用系数表示法来表示,如下图:可以看到,多项式里最重要的是两个要素:指数(Exponent)与其对应的系数(Coefficient)。对于多项式比较重要的处理是:多项式加法和乘法。多项式这类数据我们通常有以下两种实现方式。二、采用单结构(系数数组 + 最高指数)1、表示多项式的结构最容易想到的当然是,直接用一个数组来储存对应项的系数。假...原创 2020-01-11 02:12:12 · 2017 阅读 · 0 评论 -
Stack | 栈的数组实现
目录一、概述二、顺序栈(数组实现)1、栈的结构2、创建栈3、 释放栈4、检测是否为空栈5、清空栈6、入栈7、查看栈顶元素8、出栈9、出栈并返回三、总结一些细节一、概述栈ADT:栈(Stack)是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。栈中的数据元素遵守后...原创 2020-01-11 17:42:04 · 777 阅读 · 2 评论 -
Stack | 栈实现 —— 符号配对
Balancing Symbols目录一、符号匹配问题:二、栈模型的应用1、判断两个字符是否对应匹配2、处理串一、符号匹配问题:检查匹配是一个很常见的问题,比如规定下面三组匹配方式。'('与 ')'、'['与 ']'、'{'与 '}'。如果符号没有按照对应方式嵌套匹配,则认为匹配非法。那么我们如何处理一串类似于“[(({}))]”这...原创 2020-01-11 18:28:05 · 2585 阅读 · 0 评论 -
Stack | 栈实现 —— 后缀表达式
目录一、后缀表达式二、中缀表达式转后缀表达式1、过程详解2、核心算法3、代码实现完整代码一、后缀表达式我们通常见到的计算表达式都是中缀表达式,操作数分布在二元操作符的两端如:a+b。而后缀表达式是这样子表示的:ab+。后缀表达式又叫逆波兰式,表达式中操作符放在对应操作数之后,后缀表达式形式上相比中缀更加简略,因为它去除了括号,例如: ...原创 2020-01-11 20:41:38 · 4659 阅读 · 0 评论
分享