自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我的创作纪念日

转专业失败,报上辅导班,在学管老师帮助下,我和同伴的同学一起学习。对数据结构、C语言的理解更多了。

2024-05-24 23:40:24 99 1

原创 【数据结构】二叉树的功能实现

需要注意的是,如果大家在看别的博客的时候可能会遇到,他们直接使用队列的尾插功能,但其实这病不行,因为队列我们在创建时它的尾插功能的对象往往是队列的结构体,如果直接将其用来放入二叉树的层序遍历功能中,会出现bug。另外加一嘴,因为我们创建的二叉树是一个一个节点创建的,所以我们为了避免内存泄漏,最后也是需要通过递归一个一个释放,这里我们可以通过函数递归一直找到叶子节点,往上一个一个释放,即。通过这种数据结构,我们将每次提取出来的节点放到队列的末尾,这样最后输出的队列,从头往后就是二叉树的层序遍历。

2024-05-24 23:17:49 622 7

原创 【数据结构】二叉树基本概念及堆的实现

通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。下面我们给出一个数组,这个数组逻辑上可以看做一颗完全二叉树,但是还不是一个堆,现在我们通过算法,把它构建成一个堆。这里我们从倒数的第一个非叶子结点的子树开始调整,一直调整到根结点的树,就可以调整成堆。因为度为0的结点没有孩子,故度为0的结点不产生边;当我们删除一个最大堆的堆顶(并不是完全删除,而是替换到最后面),经过自我调节,第二大的元素就会被交换上来,成为最大堆的新堆顶。

2024-05-16 21:26:03 777 19

原创 【数据结构】有关栈和队列相互转换问题

整个队列实现栈的操作中最难理解的就是尾插和尾删的联系与衔接,这两者的关系一旦理清,别的就是信手拈来,这里笔者就不赘述了,跟栈的原始操作大同小异,代码就放在下面了。关于用栈实现队列,我们要做的不同方向是,利用两个栈实现,这两个栈不想上面一样,通过判空来使用,而是直接进行分区,一个用来输入,一个用来输出。,关于尾删,我们的想法应该是利用队列中带有的尾插操作,将有数据的队列的数据一个个传到空队列中,最后一个传出的数据就是我们要删的数。此时我们需要做的是利用队列中自带的取队头数据操作,就可以获得栈所需的栈顶元素,

2024-05-13 15:55:33 823 21

原创 【数据结构】队列详解(Queue)

联想一下链表,在单链表中,只能对表尾进行插入,对表头进行结点的删除,这样强限制性的链表,就是所说的队列。队列是一个线性的数据结构,并且这个数据结构只允许在一端进行插入,另一端进行删除,禁止直接访问除这两端以外的一切数据,且队列是一个先进先出的数据结构。队列只有链式的设计方法,其本身分为多种队列,如顺序队列和循环队列,还有衍生的优先队列等等,以顺序队列的设计为例。两者的区别仅是顺序表和链表的区别,即在实际的物理空间中,数据集中存储的队列是顺序队列,分散存储的队列是链队列。主要的操作只对这两个指针进行操作。

2024-05-10 21:54:50 865 8

原创 关于GitHub仓库建立及提交问题

为了整一个GitHub仓库然后上传文件,笔者看了不下100篇博客,20段教程,最后在两位大佬的帮助下,才整明白了😭先提前说一嘴从2021年8月14日起,GitHub官方就不再支持文件提交时使用用户名账号及密码,所以大家至少这个时间前的攻略可以跳过了(不过笔者把能踩的坑都踩了一边😎😭)与原来直接用账号密码提交不同的是,现在需要用到的是令牌即token,后面笔者会讲着实来之不易,希望我的方法可以帮到大家。

2024-05-09 17:12:42 1141 18

原创 【数据结构】栈详解

文章目录对栈的理解栈的实现 - 基于哪种常见类型演变而来的栈的基本实现栈实现总体代码对栈的理解栈的特点:先进后出。入栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。我们可以看出羽毛球桶,先放进去的羽毛球后拿出来,后放进去的羽毛球先拿出来,为了更好的理解进栈和出栈,笔者这里用简图表示一下意思就是说,栈你如果要拿出一个,就是先拿出来后放进去的,要拿出来以前放进去的,就必须把后面放进去的全部拿出来才行栈的实现 - 基于哪种常见类型演变而来

2024-05-08 23:21:55 1063 13

原创 【数据结构】有关环形链表题目的总结

如果有环的话,创建两个指针,一个指针从head节点开始,另一个指针从相遇点meet开始,两个指针每次都走一步,两个指针相遇的点就是链表入环的第一个节点。关于这道题,大家可以利用快慢指针,一个每次走两步,一个每次走一步,只要他们有一次相撞了就代表说这是一个链表。这是快指针步数为3的情况,为4,为5的讨论情况也差不多这样,无非就是再讨论一下,这里就不赘述了。的总长度是不会变的,变得只是快慢指针之间的距离,如果在进行一次循环我们可以将。为奇数的话,就会导致最后快指针比慢指针多走了一步,这就会导致,追不上吗,

2024-05-06 21:39:26 970 14

原创 【Maekdown】编辑器方法

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2024-05-06 17:19:15 782 1

原创 【C语言】贪吃蛇项目(2)- 实现代码详解

在笔者的前一篇博客中详细记载了贪吃蛇项目所需的一些必备知识以及我们进行贪吃蛇项目的整体大致思路,有需要的朋友可以自行看下此外,需要提醒的是,如果你也想要自己写出这样的贪吃蛇程序,你最好进行区块分类,在头文件中将所有方法文件中用到的功能先写出来。对于等等写着写着忘记原来这个方法干嘛用的,可以点击你想要找的内容,再按F12就可以回溯到这个方法的最开始的编写部分了。

2024-04-20 21:24:46 1075 20

原创 【C语言】贪吃蛇项目(1) - 部分Win32 API详解 及 贪吃蛇项目思路

本次实现贪吃蛇会使用到的一些Win32 API知识,接下来我们就学习一下。Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便称之为 Application Programming Interface,简称AP|函数。

2024-04-17 22:01:07 818 5

原创 【C语言】双向链表详解

一篇博客带你理解双向链表的实现及注意事项

2024-04-12 22:31:02 1199 6

原创 【unity】【C#】游戏音乐播放和发布

文件就可以打开这个游戏了,如果你想把这个游戏发给别人,需要回到整个打包文件夹下,将整个打包文件一起发送,这样游戏才能运行。关于游戏的打包发布就比较简单了,按下图这个顺序保存文件到自己想保存的位置,尽量避免路径中存在英文,不仅如此我们还可以通过鼠标、键盘等的输入,改变音乐的播放情况,比如说下面这一块代码,我们先调用。,确保运行时有声音出现,之所以有且仅有一个,是因为每个。都会单独运行,如果多个一起运行,可能会导致不必要的错误。会导致运行时场景没有声音,但是如果我们再代码的。还有一点需要注意的是,我们。

2024-04-11 21:31:10 992 1

原创 【unity】【C#】UGUI组件

关于交互功能,举个例子,这个部分的功能,就是在按钮点击后会发生的变化,我们把text拖拽进这个部分,设置点击时失活(打勾为激活)这个东西其实就是一个滑块,在游戏里,角色往往有血条,这个滑块我们可以设置百分比填充,附带上代码,就能实现角色血量的变化。看到左下角那个小红方块了吗,我们可以移动它,也可以更改它的大小,如果想要等比例缩放只需要按住 alt 键。比较重要的是这一部分 - 交互功能,笔者用红圈圈出来的,勾选上这个按钮才有交互功能,否则没有。,同样我们可以在右边对他进行外观的编辑。

2024-04-10 23:21:07 577 1

原创 【数据结构】单链表

在笔者之前的文章中提到过顺序表,但是顺序表存在许多缺陷,比如说在中间或头部插入低下(要进行循环,将后面元素后移),一旦增容会降低运行效率、增容造成空间浪费等,因此,链表应运而生,可以刚好填补上上述三个缺点。

2024-04-09 22:42:42 1305

原创 【unity】【C#】物理系统和碰撞检验

同理,如果我们遇到 player 因为撞击后虽然飞的比较慢,但是旋转的速度比较快,我们就可以把角阻力 angular drag 给增大,就可以肉眼可见地发现旋转幅度下降了,质量也是如此,只要根据现实生活中的运用去思考就行了,不放图过多赘述了。再往下看,这里的意思的约束,第一行用来约束对象的移动,第二行用来约束旋转,只要勾选上,该物体在碰撞过程中,勾选上的内容就不再会发生改变。这个碰撞线是对象间碰撞的依据,可以随意改变,点击碰撞系统中的编辑按钮,再拖拽对象上的淡绿色小点就可以改变这个对象的碰撞范围。

2024-04-08 15:37:04 1108

原创 【unity】【C#】变换组件 Transform 和 V3结构体

因为运动不方便以静图的形式表示,所以这里我们打印每一帧的位置,如果你有一同操作,也能够发现这里的立方体以肉眼可见的速度迅速向后退去。这里需要注意的是字符串的查找十分严格,必须与子类对象名一模一样才能查找到,否则报错。但是这种自定义一个变量的方法肯定是无用的,但是我们可以通过向量来改变这个对象的位置。如果你觉得运行速度太快,不想以帧为单位,换为秒的话,只需要在V3结构体后乘上。相当于自定义一个向量,比如下面的代码,我们将鼠标放在。保存后调用,也成功地调用出了这个对象的位置。的输出同理,仅一种,不演示了。

2024-04-07 20:24:10 1328 1

原创 【unity】【C#】延时调用(协程)和场景管理

协程允许您将任务分布在多个帧中。在 Unity 中,协程是一种方法可以暂停执行并将控制权返回给 Unity,然后在下一帧中从中断的地方继续。在大多数情况下,调用方法时,它会运行到完成,然后将控制权返回给调用方法以及任何可选的返回值。这意味着在方法中发生的任何操作都必须在单个帧更新中发生。

2024-04-06 20:32:46 1401

原创 【数据结构】利用顺序表实现通讯录

这篇文章实现的通讯录利用了笔者上一篇写的有关顺序表的应用,需要用的朋友自行复制。

2024-04-05 21:45:24 567

原创 【C语言】【Leetcode】【递归】22. 括号生成

递归、回溯、strcpy以0为结束,calloc全部为0

2024-04-04 21:37:26 781

原创 【数据结构】顺序表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。所以我们可以认为顺序表是一种高级的数组,一种封装了一些功能的数组,实现了常用的增删改查等接口静态顺序表它只有两个成员,缺点是数据长度定死,没有灵活性这里我们看到第一行有一行代码。

2024-04-03 23:18:09 579

原创 【C语言】“vid”Microsoft Visual Studio安装及应用(检验内存泄露)

我们在写代码时往往容易存在内存泄漏的情况,所以存在这样一个名为VLD的工具用来检验内存泄漏,现在我来教大家安装一下。

2024-04-02 22:59:28 915

原创 【C语言】【Leetcode】409. 最长回文串

关于这道题,比起一般的回文数题,这题的区别的在给定的字符中任意排序直至形成一个最长的回文数,而且题目中跟我们提到,这里的字符串中只会出现字母,我们只需区分大小写即可。最后判断每个数组里的元素是否为偶数,是偶数直接在回文数总长度上加上这个长度,奇数,则加上奇数后减一。需要注意的一点是,如果有单独出来的一个数,可以把它放在中间,为回文数的总长度加上一,但是仅只能一次。所以我们可以这样思考,建立一个有52个int类型大小的数组,用来记录每个大小写字母出现的次数。

2024-04-01 23:21:16 492

原创 【C语言】【Leetcode】2437. 有效时间的数目

由于时钟的最大值为 24,分钟的最大值为 60,在此题解中分别枚举所可能的时钟,以及所有可能分钟,时间复杂度为 O(24+60)=O(1)。这题的可以简单的看成 h1 h2 : m1 m2 的情况,其中 h1 和 h2 有关, m1 和 m2 有关,数目不多可以直接暴力枚举解决。’ 时,我们可以填入 0 - 9 任意一个数字,然后再返回去看是否合法就行。即 00

2024-03-31 21:11:51 375

原创 【C#】知识点速通

笔者是跟着哔站课程(Trigger)学习unity才去学习的C#,并且C语言功底尚存,所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解,然后在后期unity学习过程中加以深度学习。#region 和 #endregion 是用来分区的,便于找到所需部分,不用该部分时,可以点击 #region 左边的箭头进行缩略。其中比较重要的部分是public,static等的理解,以及父子集的运用,推荐还是跟着课程学习为好。所有内容只需要简单搜索就可以找到解释。即可,部分内容有所串通,不使用时尽。

2024-03-30 23:33:09 829

原创 【unity】unity安装及路线图

笔者电脑中提前安装了VS,所以出现了错误,这里笔者是直接在unity文件安装完出现错误后就取消下载了,但是这就会出现一个问题,就是一般通过unity hub下载的VS里Tahiti自动勾选unity开发一栏,所以笔者的就没有,但是没有关系。这里unity的安装往往会把编译器一同安装下来,就像下面这样,会根据所安装的unity版本,安装不同的编译器,就比如说2022开头的unity就会安装2022版的VS编译器。同时等待unitt hub下载完成后,直接点击我同意,并把文件安装在。二、有关unity的下载。

2024-03-29 22:34:24 628

原创 【C语言】预处理常见知识详解(宏详解)

在C语言中内置了一些预定义符号,可以直接使用,这些符号实在预处理期间处理的,并且这些符号都是C语言ANSIC里收集的但是在笔者的VS2022里不完全支持ANSIC的所有预定义符号这里把这里的预定义处理STDC都打印了一遍,证明都可以实现,但是当我们打印STDC时会出现由此可见随着编译器版本的升级有些C语言内置预定义会被忽视掉基本语法以下举例1000//register//为 register这个关键字,创建一个简短的名字/用更形象的符号来替换一种实现for;;

2024-03-28 23:32:41 2263

原创 【C语言】编译和链接

简单图文介绍编译和链接

2024-03-27 23:00:25 1344

原创 【C语言】【Leetcode】70. 爬楼梯

所以这里我们可以尝试使用动态规划的方法,就是说这里我们是知道目标数的,所以我们可以直接利用for循环从1和2开始一直循环下去,使 f(n) = f(n-1) + f(n-2) 下去,比上面的递归的空间复杂度就小了很多,只有O(n),同时因为没有额外创建循环空间,所以最后空间复杂度是O(1)其实这里还可以用数学的方法做,但是有带你复杂就不说了,有兴趣可以去力扣官方解题思路里看看。这题类似于斐波那契数列的算法,结果其实就是到达前一步和到达前两步的方法之和,一直递归到。

2024-03-26 23:01:32 422

原创 【C语言】【Leetcode】88. 合并两个有序数组

为了不多创建一个新的数组,我们可以利用num1数组后面多出来的那几个0做文章,我们在上一种方法中采用的是先把小的取出来,但是如果我们先把大的取出来,放进num1数组的末尾,这样再不创建新的数组的前提下,num1数组的元素也不会被覆盖了。这题属于简单题,比较粗暴的做法就是直接比较两个数组,先把第二个数组加到第一个的后面,如何冒泡排序,这种方法简单粗暴但有效,可是不适用于这题,这题要求我们控制时间复杂度在O(m+n)里所以我们可以尝试双指针的方法。,最后再把这个新创立的数组的值赋给。进行比较,小的数放入。

2024-03-25 22:14:43 426

原创 【C语言】文件操作(超详细)

文件详解(超详细!!!)

2024-03-24 19:38:04 1457

原创 【C语言】关于错误信息打印的一些技巧

我们经常在运行代码时发现程序出错,但是一时之间又很难发现原因,往往需要一步一步调试过程最后发现错误点,然鹅这种方式的效率往往很低,所以我们可以借用一些函数来快速发现这些错误,提高写代码的效率。

2024-03-23 18:58:02 674

原创 【C语言】动态内存管理及其常见错误

我们已经掌握的内存开辟方式有://在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了C语言引入了动态内存开辟,让程序员自己可以申请和释放空间,就比较灵活了。

2024-03-22 21:03:37 1086

原创 【C语言】结构体详解

在笔者大前篇中记录了有关结构i的一些基本知识,主要是有关结构体类型名、变量名、成员名以及typedef的运用,链接:link,有兴趣的朋友可以看看简单复习下struct tag//类型名char m;//成员名1int i;//成员吗2}p;//变量名typedef struct tag//类型名char m;//成员名1int i;//成员名2}p;//类型名,因为typedef的存在接下来,我打算跟大家粗略地介绍一下结构体变量的创建和初始结构体的特殊声明和结构体的自引用,重点介绍下。

2024-03-22 19:26:08 1487

原创 【C语言】模拟实现 atoi

同时因为我们要将字符串转化成整型,既然是整型,那么必然就会有范围,在头文件limits.h中有定义,我们就可以直接调出最大值最小值,如果这个数字大于INT_MAX或者小于INT_MIN就会返回0。通过上述cplusplus和MSDN对atoi函数的介绍我们可以得出以下几个关键点。我们需要先循环掉一个字符前的所有空格,在判断出现的第一个字符是否为正负号,并通过。字符类型转整形,存在整形溢出的情况,需要定义为。判断字符指针是否为野指针,或者里面没有数据。存在这种情况时直接退出,并输出0。

2024-03-21 19:42:40 1046

原创 【C语言】【牛客】BC136 KiKi判断上三角矩阵

然后题目是判断该矩阵是否是上三角矩阵,那么只要判断下三角是否都为0即可,那么我们要做的是找到下三角形的下标。就行了,这样一来我们就可以通过循环判断这整个下三角矩阵,自然就通过判断他们是否全为。我们可以近似认为矩阵的情况如上,那么 纵坐标。这题很简单但是再牛客中属于中等题。,所以我们首先创建一个变量。

2024-03-20 23:33:28 701

原创 【C语言】结构体类型名、变量名以及typedef

可以看到此处的p隐指的是typedef struct tag p,所以此处的L因为typedef的存在变成了typedef struct tag p的别名,也就是说p成为了缩减版的类型名。原因是s虽然被成功定义了,但是p因为typedef的存在导致变量名不是变量名,而成为了类型名。好了,这就是全部了,这篇博客是我从别人那里借鉴的学习笔记,大家可以看看那个大佬的。一般情况下,类型名,变量名,结构体成员至少需要两个才能构成结构体。可以这么记,括号前面的是类型名,括号后面的是变量名。假设定义了上面这一个结构体,

2024-03-19 23:47:35 716

原创 【C语言】【牛客】BC161 大吉大利,今晚吃鸡

该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。再来回看一下本题,我们可以发现本质上其实差不多,不过汉诺塔问题中A,B,C三根柱子可随意选择,但是牛客网这道题只能在相邻的两根柱子里交换。-1,可能会不便于理解,为了能使自己和别人能够更好的理解这道题的本质和处理思想,我们不妨直接用递归的方法,把这道题表现出来。

2024-03-18 21:41:20 438

原创 【C语言】关于字符的一些实用函数

就直接出现了结果,这是因为scanf和getchar在读取数据时是从缓冲区内读取数据,而缓冲区位于键盘和scanf、getchar之间,在我们通过键盘输入abcdef密码并敲下回车键时,数据被送到了缓冲区,这时scanf读取字符串abcdef,所以此时只剩下 \n 在缓冲区内,所以getchar就会读取缓冲区内的 \n ,则ch= ’ \n ',因此会直接打印确认失败。如果发生错误或达到输入的末尾(例如从文件中读取时),getchar 返回特殊值 EOF(End-Of-File),通常定义为 -1。

2024-03-17 16:43:15 1217

原创 【C语言】浮点型在内存中的存储

在我的上一篇博客中详细写了整形在内存中的存储,以及大小端的介绍,有兴趣可以看一下,本篇文章重点讲讲浮点型在内存中的存储。

2024-03-16 20:36:53 1578

空空如也

空空如也

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

TA关注的人

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