![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
考研
文章平均质量分 73
Ch.yang
try{ coding } catch { bug }
展开
-
【算法】AOE网找关键活动、关键路径
关键路径是什么?整个活动网影响整体耗时的路径。如果活动网没有任意一个分叉,所有节点连起来也为一条关键路径。找关键路径用于解决什么问题?项目推进中,如果要压缩工期,找到关键路径,并减小关键活动的耗时才能减少整体耗时,否则会做无用功。红色的边 = 关键活动。红色边 + 经过的节点 = 关键路径。存在关键路径的前提状态—— 图的顶点活动—— 图的边看本文需要具备的基础拓扑排序、逆拓扑排序参考王道教程,例子来源于王道。原创 2021-09-18 17:37:29 · 5909 阅读 · 3 评论 -
【算法】判断两棵二叉树是否相似
1. 前言看到本题后,考虑使用前中后哪种遍历确认递归函数是否携带返回值运算符&& 的逻辑短路的特性2. 题目已知两颗二叉树B1和B2,算法f52判断B1和B2是否相似,相似则返回1,否则返回0。如果B1和B2均为空树,则两棵树相似。如果B1和B2非空且B1的左右子树与B2的左右子树分别相似。则两棵树相似。3. 题解思路确定遍历对象两棵未知形状的树,且由题意,两棵空树一定相似。if (NULL == t1 && NULL == t2) { // 规范了原创 2021-09-14 10:57:24 · 3756 阅读 · 0 评论 -
【算法】对二叉树进行操作:如果结点没有左孩子但是有右孩子,就将其右孩子改变为左孩子
1.前言提醒自己,对二叉树的操作,要对递归函数了解透彻,并熟练二叉树的递归遍历。2. 解题2.1 确定遍历类型后序遍历一定可行作为深度优先遍历,找到左子树最深处的节点后返回进行“访问”,以下将这个过程描述为回溯 。在回溯的过程中,实现交换。自底向上所有的回溯完成,交换也完成。后序遍历确保根节点最后被"访问"。2.2 代码void f(BiTree T) { if (T == NULL) { return; } f(T->lchild); f(T->rchi原创 2021-09-14 10:05:19 · 1460 阅读 · 0 评论 -
【算法】求二叉排序树中第k小的结点的位置
假设二叉排序树中增设一个lsize域,其值为该结点的左子树中的节点数加1。其类型定义如下:typedef struct BiTNode { char data; // 题中没有读写这个数据,可以忽略 int lsize; struct BiTnode *lchild, *rchild;} BiTNode, *BiTree;算法f5求二叉排序树中第k小的结点的位置。BiTree f5(BiTree T, int k) { if (NULL == T) return NULL; if (T原创 2021-09-09 16:16:32 · 533 阅读 · 0 评论 -
【算法】后序遍历判断二叉树是否为平衡二叉树
1. 前言来自广工考研真题平衡二叉树是一种高级数据结构,是O(nlogn)搜索算法的基础数据结构拆解题目内容: 后序遍历求树高度 + 全局计数器 + 节点平衡定义 + 返回值语义确认实现方式:递归遍历 + 引用类型做全局计数器2. 读题“判断” 属于二叉树的遍历“是否” 则是遍历中需要做的具体操作“平衡” 来自于定义:任意节点左右子树高度差小于2 => |左子树高度 - 右子树高度| < 23. 梳理思路递归得让每个节点知道自己所在的高度,并向上报告,其双亲节点判断自原创 2021-09-09 11:31:07 · 380 阅读 · 0 评论 -
【线性代数】结合 Ax=b 的通解结构,直观理解秩、线性变换、相关无关、基础解系
1. 前言本文的理论知识基于系列视频: 线性代数的本质。侵删阅读本文需要的前置知识:向量组的概念矩阵可以视为一种线性变换任意的线性变换“零点”位置不改变行列式 ≠ 0 => 线性变换不可逆,并产生降维线性相关无关的几何意义会计算 Ax = b 的通解2. 语义2.1 Ax 的语义假设A=[100010000] 假设A =\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 &原创 2021-09-03 00:35:16 · 6492 阅读 · 0 评论 -
【工具】clion配置git,fork数据结构教科书源码并clone到本地
1. 下载地址clion官网git官网项目需要的工具链 cygwin官网源码github地址 严蔚敏 杨伟民 数据结构教程源码(代码作者:kangjianwei)域名ip地址查询(用于优化github访问速度)2. 安装及配置注意事项2.1 clion有30天试用,需要永久版本的可按需淘宝,推荐JetBrains的全家桶永久版2.3 git2.4 cygwin下载版本选 setup-x86_64.exe, 下载完成后是一个下载器,需要连远程服务器。注意在 Select Conn原创 2021-08-20 18:32:30 · 3020 阅读 · 0 评论 -
【C/C++】Java程序员理解C++方法签名中结构体指针的引用的作用
1. 前言本文先介绍C中的指针和引用的区别,再联系Java中舍弃指针,只用引用的使用场景进行理解。2. 使用的场景下题摘自广工考研真题:2.1 题目某仓库用一个带头节点的循环链表L存储各种货物的代码,链表的定义如下:看不懂链表定义点这里typedef struct Goods { int code; Goods *next;} Goods, *GoodsList;试写一个算法 void f(GoodsList L, GoodList &Lc, int c),将其中代码code大原创 2021-08-06 23:42:45 · 271 阅读 · 0 评论 -
【C/C++】typedef 在结构体声明下的应用场景
1. 前言typedef用于减少代码冗余,定义稍复杂,使用就时就简单了。typedef使用在结构体声明中,增强结构体元素在数据结构中的语义不再介绍typedef用在普通数据类型下的场景2. 普通链表的结构体定义及使用2.1 普通链表定义struct Goods{ int code; struct Goods*next;};2.2 普通链表使用先介绍最基础的用法,文末将列出增强后的用法。// 创建商品链表的头指针,及第一个元素和第二个元素struct Goods *head,原创 2021-08-04 18:09:59 · 325 阅读 · 0 评论 -
【算法】中缀表达式转换成后缀表达式的算法理解
中缀表达式转换成后缀表达式的算法理解liuyubobobo 老师曾表达一个观点,学算法,并不一定要从算法发明人的视角去从0至1的实现。光能够体会算法的精妙之处本来就是值得兴奋的事,若能将算法思想用于自己的工作中则更是难得的美事。【2012统考真题】已知操作符包括“+”、“-”、“*”、“/”、“(”和“)”。将中缀表达式a+b-a*((c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符。若栈初始时为空,则转换过程中同时保存在栈中的操原创 2021-07-05 18:09:03 · 2712 阅读 · 1 评论