无向图-基本操作函数(建立,宽度遍历,深度遍历,邻接矩阵表示)

图-迪杰斯特拉(Dijkstra)算法详解(含全部代码)

图-贝尔曼福特(Bellman-Ford)算法详解(含全部代码)(北邮考研不考)

图-弗洛伊德(FloydWarshall)算法详解(含全部代码)

图-最小生成树(Prim)算法详解(含全部代码)

图-最小生成树(Kruskal)算法详解(含全部代码)

图-完美匹配-匈牙利算法(Hungarian method Edmonds)详解(含全部代码)

图-欧拉图(欧拉环游/回路、欧拉迹/通路、Hierholzer算法、Fleury算法)

折半查找某数X在数组中出现的次数(2019北邮考研真题)

KMP算法next与nextval手算

简单选择排序

直接插入排序

排序算法比较

常见算法思想

双指针算法详解(快慢指针、对撞指针、滑动窗口)

递归-简单背包问题(修剪递归树,含全部代码)

递归-深度优先搜索(模板、回溯、剪枝、记忆化)

并查集(Disjoint Set)详解+例题

分治-最大子数组(算法导论P39)

动态规划-最大子数组

动态规划-最长平衡子串(2018北邮机试真题)

动态规划-简单背包问题

动态规划-0/1背包问题

动态规划-0/1背包优化

动态规划-完全背包

动态规划-完全背包优化

动态规划-多重背包

素数筛选-埃氏筛法与欧拉筛法

北邮机试真题

2019北邮计算机院机试真题

特殊数-2017北邮机试真题

最值问题-北邮OJ88

字符串转换-北邮OJ90

反转单词-北邮OJ103

912星球的研究生-北邮OJ104

中位数-北邮2014研究生复试

内存分配-北邮OJ277

丁神去谷歌-北邮OJ416

丁神又去谷歌(0/1背包)-北邮OJ417

算法可视化

重大消息: 本专栏出对应的实战专栏啦( OJ网站题目分类,分难度整理笔记(leetcode、牛客网) ),欢迎查看、评论、分享更优秀思路。(2020-08-28更新)

c/c++ 代码优化及常见错误

c语言位运算的妙用-程序优化

c/c++进制转换方法汇总(含全部代码)

二进制数-北邮2012研究生复试

C++ string的简单使用

C++ 类型转换(内置类型,string、char*、const char*等)

质因子分解

除树和图外的数据结构可以使用STL: C++ STL的使用

  • 数据结构

  • 线性表

循环左移(2010联考真题)

单链表相邻结点逆置(2019北邮考研真题)

二叉查找(排序)树的插入,创建,查找,删除

二叉查找树-插入结点,返回父节点(2012北邮机试)

二叉树-已知前序遍历和中序遍历,求后序遍历

哈夫曼树-创建,编码,解码,带权路径长度(含全部代码)

树-双亲表示法(含全部代码)

统计结点个数(双亲表示法)-北邮2013研究生复试

无向图-基本操作函数(建立,宽度遍历,深度遍历,邻接矩阵表示)

图-迪杰斯特拉(Dijkstra)算法详解(含全部代码)

图-贝尔曼福特(Bellman-Ford)算法详解(含全部代码)(北邮考研不考)

图-弗洛伊德(FloydWarshall)算法详解(含全部代码)

图-最小生成树(Prim)算法详解(含全部代码)

图-最小生成树(Kruskal)算法详解(含全部代码)

图-完美匹配-匈牙利算法(Hungarian method Edmonds)详解(含全部代码)

图-欧拉图(欧拉环游/回路、欧拉迹/通路、Hierholzer算法、Fleury算法)

折半查找某数X在数组中出现的次数(2019北邮考研真题)

KMP算法next与nextval手算

简单选择排序

直接插入排序

排序算法比较

  • 常见算法思想

  • 双指针

双指针算法详解(快慢指针、对撞指针、滑动窗口)

递归-简单背包问题(修剪递归树,含全部代码)

递归-深度优先搜索(模板、回溯、剪枝、记忆化)

分治-最大子数组(算法导论P39)

动态规划-最大子数组

动态规划-最长平衡子串(2018北邮机试真题)

动态规划-简单背包问题

动态规划-0/1背包问题

动态规划-0/1背包优化

动态规划-完全背包

动态规划-完全背包优化

动态规划-多重背包

素数筛选-埃氏筛法与欧拉筛法

  • 北邮机试真题

2019北邮计算机院机试真题

特殊数-2017北邮机试真题

最值问题-北邮OJ88

字符串转换-北邮OJ90

反转单词-北邮OJ103

912星球的研究生-北邮OJ104

中位数-北邮2014研究生复试

内存分配-北邮OJ277

丁神去谷歌-北邮OJ416

丁神又去谷歌(0/1背包)-北邮OJ417

算法可视化

algorithm visualizer

github上的一个开源项目,可视化学算法,使用的是js,包含的算法比较全面

关注博主公众号,回复 数据结构资源 获取数据结构(C语言版)、数据结构(第二版)课件、所有算法代码。

本人b站账号: lady_killer9

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

文章目录导论单链表概念链表插入(头插法)在任意位置插入删除任意一个节点反转一个链表(迭代)递归反转遍历链表递归反转链表双链表双链表 实现 栈用数组 实现 栈用链表 实现 栈反转一个字符串反转链表 (1) 数据结构 是什么? 研究如何在计算机中存储数据, 操作,操作的 实现 以及 实现 成本。 (2)数学模型和逻辑模型(也称为抽象数据类型 ADT) 抽象数据类型: 没有具体的 实现 细节 静态列表 --> 数组 动态列表 --> 链表 // c++ 写法 struct Node{ int data; 目录第一章 绪论1.1 复习笔记一、 什么是 数据结构 二、 基本概念和术语三、 抽象数据类型的 实现 四、 算法 算法 分析第二章 线性表一、线性表的类型定义二、线性表的顺序表示和 实现 1. 顺序表存储结构的表示2. 顺序存储结构的特点三、 线性表的链式表示和 实现 1.定义2.链式存储结构的特点3.链式存储结构的分类第三章 栈和队列一、 栈1. 栈的定义与基本操作2. 栈的表示和 实现 二、栈的应用举例1. 括号匹配2. 表达式求值三、栈与递归的 实现 1. 递归的定义2.栈在递归中的运用 数据结构 是一门研究非数值计算的程序设计 8.1概念 1.什么是排序? 排序:将一组杂乱无章的数据按一定规律顺次排列起来。即,将无序序列排成一个有序序列(由小到大或由大到小)的运算。如果参加排序的数据结点包 多个数据域,那么排序往往是针对其中某个域而言。 8.2插入排序 8.2.1直接插入排序 1.基本思想: 每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。即边插入边排序,保证子序列中随时都是排好序的。 2.插入方法: 在插入a[i]前,数组a的前半段(a[0]----a[i-1 2021-9-14【 数据结构 / 严蔚敏 】【顺序表】【 代码 实现 算法 2.1-2.7】 2021-9-18【 数据结构 / 严蔚敏 】【单链表】【 代码 实现 算法 2.8-2.12】 2021-9-18【 数据结构 / 严蔚敏 】【静态链表】【 代码 实现 算法 2.13-2.17】 2021-9-19【 数据结构 / 严蔚敏 】【双向链表】【 代码 实现 算法 2.18-2.19】 2021-9-19【 数据结构 / 严蔚敏 】【带头结点的线性表】【 代码 实现 算法 2.20-2.21】 2021-9-19【 数据结构 / 严蔚敏 】【一元多项式的表示及相加、相减、相乘 1.1、数据机构的研究内容 用计算机解决实际问题时,步骤:首先分析实际问题,从中抽象出一个适当的数学模型,然后设计一个解决此数学模型的 算法 ,最后编程,调试,测试。 寻求数据模型的实质是分析问题,从中提取出计算机处理的对象,并找出这些对象之间的关系,然后用数学的语言加以描述。 关键:分析问题中所用到的数据是如何组织的,研究数据之间存在什么样的关系。 由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。 #define TRUE 1 //逻辑真 #define FALSE 0 //逻辑假 #define OK 1 //正确 #define ERROR 0 //错误 #define INFEASIBLE -1 //不可能,非法操作 #define void InitTriplet(Triplet *T, Status v1, Status v2, Status v3); //销毁三元组 void DestroyTriplet(Triplet *T); //返回第i个位置的的元素