自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 BUAA OO Unit2 总结

最后一次作业的 UML 类图如下所示,整个作业完成过程中没有发生太大的变化,在第二次作业中将上锁改为了第一次直接对数据结构上锁改为调用时自己决定上锁,第三次作业中提取了抽象电梯类。电梯的运行(捎带)策略从第一次作业就采用策略模式,每类电梯都有自己的策略类。采用两层生产消费者模式,分别是 Input - Scheduler 和 Scheduler - Elevator。

2024-04-20 17:57:32 671

原创 2024 BUAA OO Unit1 总结

在表达式解析上,我在第一次就采用了课程组推荐的递归下降,在之后的每次迭代中,只需要根据新需求更改 Lexer 获取 tokens 的方法,并为 Parser 类 parseFactor 方法增加新的因子的解析创建方法即可。将 Expr, Term, Factor 统一视作多项式(Polynomial)。xa⋅exppoly为了方便对多项式合并同类项,可以用一个HashMap表示多项式,key 是 Unit,value 是系数。

2024-03-19 22:20:48 587

原创 北航2023面向对象先导课程总结

北航2023面向对象设计先导课程总结,记录了历次作业迭代的过程和最终架构,以及一些对课程的想法

2023-11-05 00:56:53 139 1

原创 多项式与快速傅里叶变换(FFT)

计算两个n次多项式相乘的最直接方法所需的时间为Θ(n2)\Theta(n^2)Θ(n2),在本文中,我们将讨论快速傅里叶变换(FFT),使得多项式相乘的时间复杂度降为Θ(nlgn)\Theta(nlgn)Θ(nlgn)。一、多项式的表示系数表示和点值表示对于一个次数界为n的多项式A(x)=∑j=0n−1ajxjA(x)=\sum_{j=0}^{n-1}a_{j}x^jA(x)=∑j=0n−1​aj​xj而言,其系数表示是一个由系数组成的向量a=(a0,a1,...,an−1)a=(a_{0},a_{1

2023-07-17 18:47:23 532 1

原创 力扣如何使用C语言返回数组

力扣的题目特点是不需要自己完成输入输出,只需要编写实现算法的函数即可。在刚开始使用C语言在LeetCode刷题碰到的一个问题就是,当题目要求返回一个数组(一维或二维)时,我们写的代码常常发生如下所示的内存错误。这里要求,返回的数组必须通过动态开辟(),并且函数func中都含有一个一级指针参数,这个参数指向一个值为返回数组大小的整形变量,也就是说,*就是返回数组中含有元素的个数。这里要求,返回的数组必须通过动态开辟(),并且函数func中懂包含两个参数,分别是一级指针和二级指针。

2023-07-04 14:47:30 753

原创 Summary of Tree

define MAXN 10 // N叉树节点的定义 typedef struct TreeNode {int level;} TreeNode;// 创建节点 TreeNode * CreateNode(char * data , int level) {} // 查找节点 TreeNode * search(TreeNode * node , char * key) {i ++) {

2023-06-14 16:50:45 91

原创 基本图算法(一) 图的广度优先搜索和深度优先搜索

广度优先搜索是一个逐层遍历的过程。在每步中,首先访问当前顶点u,设置该顶点的访问标志visited[u]=True。接着依次访问结点u的所有未访问过的邻接节点v1​v2​⋯vt​∈Adju,然后再顺序访问v1​v2​⋯vt​∈Adju的所有未访问过的邻接节点,直到图中的所有节点都被访问过为止。

2023-05-26 00:01:27 1233

原创 基本图算法(二) 拓扑排序

​对于一个有向无环图GVE来说,其拓扑排序是G中所有节点的一种线性次序,该次序满足如下条件:如果图G包含边uv,则节点u在拓扑排序中处于节点v的前面。显然,如果图G包含环路,则不可能排出一个线性次序。我们可以将图的拓扑排序看做是将图中的所有节点在同一水平线上排开,图的所有有向边都从左边指向右边,因此,图的拓扑排序与冒泡排序、堆排序等通常意义上的“排序”是不同的。接下来代码的实现中,采用邻接表存储图。

2023-05-19 21:45:00 3597 2

原创 最小生成树

首先介绍生成树的定义和性质。生成树是一个连通的、无环的无向图。令G=(V,E)是一个无向图,则有如下等价定义:1. G是最小生成树2. G中任何两个顶点由唯一的简单路径相连3. G是连通的,但是从图中移出任意一条变得到的图均不连通4. G是连通的,且|E| = |V|-15. G是无环的,且|E| = |V|-16. G是无环的,但是如果向E中添加任何一条边,均会造成图包含一个环上图是一棵生成树,每个顶点从其他顶点都是可达的,并且没有形成环。只要在生成树中任意添加一条边,都会形成环;

2023-05-07 17:10:55 2594

原创 排序算法(三) 冒泡排序和快速排序

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

2023-04-01 00:23:58 1506

原创 排序算法(二) 选择排序和堆排序

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

2023-03-26 00:31:17 857

原创 排序算法(一) 插入排序和希尔排序

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

2023-03-25 17:30:31 183

原创 KMP算法

KMP算法是一种经典的字符串匹配算法,相较于朴素的字符串暴力匹配算法,其在时间复杂度上优化至O(n)的线性时间复杂度,极大提高了匹配效率。在本文中,统一规定用【】来表示指向主串的指针,用【】来表示指向模式串的指针。用来表示主串的长度,m来表示模式串的长度。朴素的字符串暴力匹配算法枚举了所有的主串中开始匹配的位置(cp),当匹配失败,cp加1,i回退到cp,j回退到0,在最坏的情况下,需要匹配m*n次。朴素算法时间复杂度如此大的原因主要在于每次匹配失败时。

2023-03-20 09:20:29 275

原创 环形链表详解

以力扣环形链表的两道题为例,结合图片示意具体给出解决环形链表相关问题的常用方法

2023-01-30 22:51:51 1236 2

原创 链表和C语言

介绍数据结构基础的链表相关内容。包含链表的概念、结构和分类,重心在以单链表为例分析怎样用C语言实现链表,给出具体代码,通过画图便于读者理解。

2023-01-07 19:49:13 136

原创 动态内存管理(C语言)

C语言中动态空间的开辟与使用

2022-11-16 00:51:27 321 6

原创 qsort函数的使用方法

简单介绍qsort函数的使用方法

2022-11-03 11:52:55 550 1

原创 C语言字符串函数用法与模拟实现(上)

简单介绍C语言中字符串函数的用法和模拟实现

2022-10-24 22:57:33 786 4

环形链表介绍以及题目解析-力扣141、142

从环形链表的概念出发,选取力扣题目141和142为例,介绍如何判断一个链表是否是环形链表,如何寻找环形链表的入环节点,给出严格的数学证明

2023-01-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除