自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程学习【一】

进程是计算机中的重要概念,每个运行中的程序都有属于自己的进程信息,操作系统可以根据这些信息来进行任务管理,比如在我们Windows中的任务管理器中,可以看到各种运行中的任务信息,这些任务就可以称之为进程,简单的进程二字后面包含着许多知识,比如为什么OS需要对任务进行管理、任务信息是如何组成的、如何创建新任务等,下面我将带大家从冯诺依曼结构体系开始,理解学习进程相关知识

2023-01-22 22:28:09 2666 46

原创 Linux工具学习之【gdb】

vim可以编写代码,gcc/g++可以编译代码,此时只最后一件神器,就能进行完整的开发工作,那就是通过gdb调试代码,毕竟谁都不敢保证自己的代码没有问题,所以就有调试器这种东西帮助我们定位问题,进而解决问题。

2023-01-12 13:31:19 2165 75

原创 Linux工具学习之【git】

git是一个代码托管平台,它的创始人是大名鼎鼎的Linux之父:林纳斯·托瓦兹git的诞生可以使我们对已提交的代码历史版本进行回溯,这是一个十分重要的功能,除了查看历史版本外,git还支持代码合并和打标签等诸多使用功能;简言之,有了git以后,我们可以随时随地的对代码进行管理

2023-01-11 15:41:13 1338 29

原创 Linux工具学习之【gcc/g++】

书接上文,我们已经学习了Linux中的编辑器vim的相关使用方法,现在已经能直接在Linux中编写C/C++代码,有了代码之后就要尝试去编译并运行它,此时就可以学习一下Linux中的编译器gcc/g++了,我们一般使用gcc编译C语言,g++编译C++(当然g++也可编译C语言),这两个编译器我们可以当作一个来学习,因为它们的命令选项都是通用的,只是编译对象不同。除了编译器相关介绍外,本文还会库、自动化构建工具、提权等知识,一起来看看吧

2023-01-10 16:13:39 2668 52

原创 Linux工具学习之【vim】

vim是一款小而美的编辑器,是vi的升级版,完美支持了其所有指令,并且新增了许多特性,作为一款编辑器,我们可以在上面写各种语言的代码(主要是C/C++)。vim有多种模式,光是如何退出vim这个问题在上就有几百万的浏览量,由此可见vim还是有一定的使用门槛的。当然vim中还有许多指令和极大的自定义空间,需要不断练习以熟练使用vim,最后我们还可以根据个人喜好配置出一款属于自己的vim

2023-01-05 21:13:50 1045 54

原创 Linux 权限理解和学习

权限,是生活中必不可缺的一部分,比如某某小区的门禁制度、某某影视平台的VIP、某扣空间的黄钻等等,这些都是权限,是区分用户群体的重要方式。`Linux` 中也需要权限,否则这么大的一个平台就无法规范管理,`Linux` 中的权限主要是针对文件,比如`文件权限`与`目录权限`,下面跟着我一起来进行权限的相关学习吧。

2022-12-31 20:24:00 8482 80

原创 带你学懂数据结构中的八大排序(下)

排序(Sort)是初阶数据结构中的最后一块内容,所谓排序,就是通过某种手段,使目标数据变为递增或递减,排序有很多种方式:插入、选择、交换、归并、映射等等,本文会介绍这些方式下的详细实现方法,因篇幅较长,故分为上下文的形式介绍,本文是下半部分。下面是通过排序生成的排行榜说明:快排与归并采用的都是递归版排序名称时间复杂度空间复杂度稳定性直接插入排序O(N^2)O(1)稳定希尔排序O(N^1.3)O(1)不稳定简单选择排序O(N^2)O(1)不稳定堆排序O(N*logN)

2022-12-28 16:15:58 662 22

原创 带你学懂数据结构中的八大排序(上)

排序(Sort)是初阶数据结构中的最后一块内容,所谓`排序`,就是通过某种手段,使目标数据变为递增或递减,`排序`有很多种方式:插入、选择、交换、归并、映射等等,本文会介绍这些方式下的详细实现方法,因篇幅较长,故分为上下文的形式介绍,本文是上半部分。

2022-12-26 14:50:28 796 21

原创 听说Linux基础指令很多?这里都帮你总结好了

对于Linux初学者来说,最头疼的莫过于各种各样的英文指令,比如什么ls、touch、pwd等等,如果单纯的依靠文档学习,理解起来是比较困难的。于是我决定花费大量时间,总结多达40+条基础指令用法,配合动图演示,让大家能够轻松理解、掌握它们

2022-12-18 14:12:36 1223 43

原创 听说你还不了解二叉树?赶紧进来轻松解决

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。简言之,二叉树是数据结构中非常重要的东西,在很多OJ试题和笔试题中,都会出现它的影子;至于高阶数据结构中的各种树,比如二叉搜索树、AVL树、红黑树、B树等都是基于二叉树的高阶树。总之,现在把普通二叉树学好了,对以后的学习是十分有帮助的。

2022-12-10 14:54:53 1284 58

原创 关于“堆”,看看这篇文章就够了(附堆的两种应用场景)

堆(heap)是计算机科学中一类特殊的数据结构的统称,堆通常是一个可以被看做一棵树的数组对象,因此堆常常是通过数组的形式来实现的,不过堆在实现时必须遵守两个原则:1.要么是大根堆(大堆) 2.要么是小根堆(小堆)。堆总是一棵完全二叉树,堆在实现时的基本功能有 入堆、出堆、查看堆顶元素及大小、判空 等,不过堆通常不单独使用,常常是作为一种辅助结构来处理现实中的问题,比如`堆排序`和`Top-K问题`

2022-12-08 10:46:50 1078 55

原创 数据结构 | 栈和队列

栈(Stack)又名堆栈,它是一种运算受限的线性表,限定仅在表尾进行插入和删除操作的线性表。队列(Queue)也是一种特殊的线性表,特殊之处在于它只允许在表的前端(Front)进行删除操作,而在表的后端(Rear)进行插入操作,和栈一样,队列`的部分操作也会受到限制。栈的特点是 先进后出(FILO),`队列` 则是 先进先出(FIFO),本文将会通过顺序存储的方式模拟实现 栈,以及链式存储的方式模拟实现 队列,两种数据结构都比较简单,一起来看看吧!

2022-11-24 09:28:42 726 68

原创 数据结构 | 单链表

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置) ,元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

2022-11-12 19:13:18 972 71

原创 C语言题解 | 去重数组&&合并数组

去除数组中重复的元素和合并两个数组也都是很好的题目,都是与顺序表(数组)有关的OJ题,适合用来练手,其中去重数组是去掉数组中所有重复的元素,确保每个元素都只出现一次;合并数组指的是合并两个有序数组,合并后的新数组也要确保有序。两题都是简单题,方向对了都很容易做出来。

2022-11-05 17:31:19 937 51

原创 C语言题解 | 移除元素(多种解法)

这是力扣上的一道简单题,需求是移除数组中的指定元素,并且要求空间复杂度为O(1),即原地移除,我们可以用顺序表中的任意位置删除的思想解决这个题,符合题目要求,当然还有其他解法。

2022-11-04 23:45:56 496 35

原创 数据结构 | 顺序表

顺序表本质上就是数组,这也表明 `顺序表` 的基本要求是存储空间要连续,并且元素必须是连续存储。除了数组外,我们还可以使用堆区上开辟的空间,这也是可以实现 `顺序表` 的,下面一起来看看怎么实现吧!

2022-11-02 23:11:06 991 66

原创 C语言题解 | 消失的数字&轮转数组

在 数据结构 | 时间复杂度与空间复杂度 一文中,分享了两个和复杂度相关的例题,现在就来给大家分享下这两个题的多种解法

2022-10-24 23:40:21 1000 50

原创 数据结构 | 时间复杂度与空间复杂度

复杂度是衡量一个算法好坏的标准,可以从时间和空间两个维度进行比较。可能你之前听说某个算法的时间复杂度是O(N),空间复杂度是O(1),知道这是一个还不错的算法,那么你知道这些复杂度是如何计算出来的吗?本文将会揭开它们神秘的面纱,让你拥有一把衡量算法好坏的度量衡。

2022-10-23 23:12:09 2117 88

原创 阶段性总结 | C语言

各位CSND的小伙伴们大家好!我是博主Yohifo,时间过得可真快啊,从我7月份在这里发布专栏《C语言——梦想系列》的第一篇文章梦开始的地方到如今专栏最后一篇文章程序环境和预处理的发布,仅仅经过了三个月的时间,在这三个月的时间中,这个专栏共计产出了19篇文章,文章阅读量也成功破万,在此感谢各位小伙伴的支持,让我能一直坚持创作,并获得了这般成就。

2022-10-22 18:00:03 1257 19

原创 C语言课设——通讯录(静态、动态、文件三版合一)

相信每个科班的同学都有过C语言课设的经历,比如教职工工资管理系统、图书信息管理系统、学生信息管理系统、通讯录系统等,其实这些课设任务的底层逻辑都是一致的,无非就是对结构体变量进行增删查改操作,同时配合文件操作将数据保存在文件夹中,本文将以通讯录举例,从静态版到文件版,让大家明白通讯录系统是如何逐步完善的。

2022-10-21 17:11:27 967 48

原创 C语言进阶——程序环境和预处理

在C/C++中,所有的代码在输出结果前都需要经过这五个阶段:预编译—>编译—>汇编—>链接—>执行代码。其中前四个阶段是在翻译环境下进行,因为在翻译环境中有编译器和链接器这两个重要工具,二者配合能将文本形式的代码转化为对应的二进制代码和可执行文件;而最后一个阶段是在执行环境中进行的,代码在这个阶段已经打包好了,只需要执行器运行此代码,结果就能很好的输出。可以看出,整个代码运行逻辑是极其严谨和巧妙的。除程序环境外,C/C++在预处理阶段还有各式各样的预处理指令等着我们去发掘,一起来看看吧!

2022-10-16 17:28:04 932 73

原创 C语言进阶——文件操作

文件——是我们生活中必不可缺的一部分,优秀的文件管理能使我们工作效率更高,比如上学时的点名册、平时记账的手账本、电脑中存储数据的各种文件夹等。数据构成文件,文件成就数据,因此我们需要学习C语言中的各种文件操作,使数据能够做到持久化存储。图片来源:百度图片如上图所示,这就是文件,不过这是传统的纸质文件。在我们电脑中的都是电子文件夹,存储的都是电子文件,比如数字、图片、文档等,这些数据都是存储在我们电脑的硬盘上的,只要硬盘没坏,那么这些数据随时随地都能找到,而且方便检索。

2022-10-14 14:37:36 2410 70

原创 C语言进阶——动态内存管理

栈区、堆区以及静态区,这三块区域比较重要。比如我们的 main 函数就是在栈上开辟的空间,当然我们使用的一般变量也都是存储在栈区上的,但是栈区空间有限,不能存储较大的数据,此时我们会通过动态内存管理来为这些“大数据”在堆上开辟空间供其使用,用完后记得释放内存就好了,除了储存“大数据”外,在堆区上开辟的空间还可以随意改变其大小(扩大或缩小都可以)。由此可见动态内存开辟的实用性,要想实现动态内存开辟也不难,只需要跟着本文一步一步学习就好了!

2022-09-30 19:06:55 2636 38

原创 C语言进阶——自定义类型

简单数据类型和复杂数据类型,简单数据类型就是我们经常用到的整型(int)、实型(float)、字符型(char)等,复杂数据类型中有结构体(struct)、位段(struct)、枚举(enum)和联合体(union)这几种。简单数据类型负责存储简单的数据;而复杂数据类型则适用于复杂对象的描述,比如我们学生的信息、图书的信息等。使用复杂数据类型(即自定义类型)能很好的进行数据存储与访问,所以还在等什么呢?让我们一起进入更深层次的数据世界吧!

2022-09-24 16:19:53 1229 40

原创 C语言进阶——字符串&&内存函数

我们从字符串类型操作开始,延伸到全数据类型的操作,中间还介绍了几个字符分类函数,这些库函数就像一件件实用的工具,是前人智慧的结晶,所以我们不仅要会用,还要用好,并将它们运用到代码中。知其然,并知其所以然,对这些库函数的模拟实现能让我们更为全面的了解实现原理,并避免犯错。

2022-09-16 15:21:50 1014 33

原创 C语言进阶——指针进阶试题讲解(万字长文详解)

指针,一块存储其他内存块地址的空间,不仅能监管别人的地址信息,还拥有属于自己的地址。在取地址操作符(&)与解引用操作符(*)的“双重折磨”下,很多人对指针望而生畏,常常会掉进不规范使用指针而引发错误的大坑中。本文旨在通过众多例子来带大家理解指针(主要包含sizeof、strlen和多道指针笔试题),本文篇幅可能较长,请系好安全带,跟我走!

2022-09-11 21:35:59 1782 38

原创 C语言题解——除自身以外数组的乘积(力扣 第238题)

这是力扣题库中的一个中等难题,说是存在一个整型数组,求出各元素位上除此数外其他元素的乘积,比如存在数组[1,2,3,4],按照题目应该该输出[24,12,8,6],我们的解题思想为:求出各元素的左积和右积(当然不包含自己),然后将左积与右积相乘,就可以得到目标积数,拿上面的例子来说,下标0的左积为1(默认数组外为1),右积为24,相乘得到目标积24,其他元素也是依次类推。下面来看看具体讲解吧:

2022-09-02 22:29:12 568 14

原创 剑指Offer 第53题:数字在升序数组中出现的次数

简单来说,我们就是先折半聚拢,然后分开扩散查找的思想,当然这得建立在数组有序的情况下,因此我使用了快排,但事实是不用快排也能运行,可以猜出牛客网中的例子应该都是有序的,总的来说知识点不多,无非就是分支与循环、函数、数组,然后再利用折半+遍历,就能解决这个问题,简单标签当之无愧。

2022-08-19 18:44:36 693 16

原创 C语言进阶——指针进阶

指针就是地址,而凡是存储在内存中的值都会有属于自己的地址,指针指向地址,这样我们就能通过指针间接操作变量。我们在指针初阶中介绍了指针的基本概念:如指针大小、野指针问题、指针间的关系运算等,在我们的指针进阶中,将会对指针进行进一步剖析,见识更深的指针!🎊🎊......

2022-08-13 18:48:04 763 18

原创 C语言进阶——数据在内存中的存储

数据类型算是C语言中的底层部分了,不同数据类型的数值轮回也是合情合理,在做题时注意看是否有符号,这样在进行计算时就可以判断出是否接近边界;不同类型的数据都有其应用场景,只有做到场景匹配了,程序效率才会最大化。总的来说,无论是反码相加还是浮点数的存储,都是非常巧妙的设计,是无数前辈绞尽脑汁的最优解,正是因为有了这些规则,今天我们才能看到如此完善的C语言体系。今天,我们站在巨人的肩膀上,明天,我们也许就能实现巨人们远大的理想!🌌..................

2022-08-10 22:10:20 685 24

原创 C语言初阶——实用调试技巧

当我们设好监视值后,就可以按F10 或F11 来观察变量的变化情况,当然监视窗口内的监视值可以随时改变,也可以在调试过程中唤出监视窗口,使用都很自由。F5 一般是在有断点的情况下使用,而断点是用来跳过无用语句或循环的,F10 是在不想进入函数时使用,F11 则是非常详细的进行调试,会进入函数内部。链式访问、const保护被拷贝的指针,assert断言、利用 '\0' 巧妙赋值和结束循环、完善函数的返回类型。想要读懂汇编代码需要经过一定的学习,在某些场景下,汇编代码更能展示代码实现逻辑。......

2022-08-08 15:15:27 1112 8

原创 C语言题解——倒置字符串(剑指Offer 第58题)

以上便是此题的解析,翻转再翻转的操作值得深思,起点、终点指针的位置也要注意更新。数组名(首元素地址)、数组长度、数组尾元素地址。

2022-08-07 20:59:36 200 7

原创 C语言题解——最小公倍数的三种求法(含最大公约数)

最小公倍数是指能同时将两数整除的最小倍数,而最大公约数是则是能被两数同时整除的最小因数。最小公倍数有个特点,就是最小为两数中的较大值,最大为两数的乘积;最小公倍数则是最小为1,最大为两数中较小值(如果两数相同,那么最大公约数、最小公倍数是它们本身)🎉🎉🎉......

2022-08-07 17:20:06 747 4

原创 C语言初阶——结构体

无论是整型、实型还是我们的数组,它们都只能描述单一对象,无法对一个复杂对象进行描述,比如我们的学生信息,包含学生姓名(字符型数组)、学号(整型)、电话号码(整型数组)等,将需要的信息整合在一起,配合上结构体关键字(struct),这样我们就得到了一个结构体变量。合理使用结构体变量能让我们对现实世界中的信息做出更好的描述。一起看看结构体吧!🎉🎉🎉.........

2022-08-04 20:33:32 125 4

原创 C语言初阶——指针

指针是我们内存中最小单元的地址编号,因此指针能储存我们程序中各种变量在内存中的对应地址(&取出地址放入指针变量内,使用时通过*解引用访问操作即可),指针使用起来高效迅速,能够用一个指针变量记住复杂变量的地址,然后对其进行远程操作;但因为指针代表的是计算中的底层地址,不容易观察,因此很多人认为指针很难,根本学不懂,其实没那么夸张,指针不过是地址,是我们用来辅助完成程序设计的工具而已。下面让我带大家进入指针的世界!🎉🎉🎉...

2022-08-04 15:59:04 295 3

原创 C语言初阶——操作符

除号比较特殊,如果两端操作数类型都一样就执行相应除法,比如 整型 / 整型结果为整型,浮点型 / 浮点型结果为浮点型,但是如果整型 / 整型产生的结果中有小数(浮点型)只会显示整数部分,除非将其中一个或两个都写成浮点型,比如 5 / 3 产生小数但只显示整数,我们可以写成 5.0 / 3此时会显示小数部分。...

2022-07-31 18:43:30 147 3

原创 C4996 “scanf“ 问题——初学者使用VS的拦路虎

微软的VS系列编译器号称地表最强集成开发环境(IDE),现在已经更新到了2022版,丰富的功能和高级的界面,对于学校里用的VC++ 6.0简直是降维打击,很多追求优质编码环境的同学可能都会去网上找到VS的资源,然后安装使用,当一切环境准备就绪时,发现涉及到使用 scanf 的代码无法编译,再三检查后发现代码没有任何问题,一时间甚至会怀疑自己是不是下错了编译器。其实没有,这是一个很常见的报错,也是所有想用VS的同学必过的一道坎。下面让我来教大家如何跨过这道坎:...

2022-07-30 18:08:21 1058 5

原创 扫雷——循环、函数、数组三位一体

💣扫雷,一款微软在上世纪九十年内置于windows的小游戏,玩法很简单,根据提示避开所有雷区即可获胜,原理也很简单:通过两个数组和功能实现函数的配合,实现踩雷结束,否则提示的基本逻辑。如今在win11上已经看不见这款小游戏了,根据第一性原则,没有我们就去创造,下面让我们一起看看扫雷是怎样诞生的😀......

2022-07-29 22:37:33 621 11

原创 三子棋——年轻人的第一款小游戏

经过一段时间的学习,分支与循环、数组与函数的相关知识已经足够支撑我们完成一个小游戏了,这个小游戏不需要太多的功能,也不需要太复杂的逻辑,只需要懂点循环与分支,懂点数组的使用以及函数如何传参和返值即可。作为草稿纸上常出现的小游戏,三子棋的逻辑可谓是非常简单了,只需要玩家走一步、电脑走一步,并在八种可能获胜结果中比对就行了,下面让我们一起来看看三子棋的实现。...

2022-07-28 23:10:12 139 2

原创 C语言初阶——数组

数组是C语言中高频使用的工具,数组能将一组同类型的元素集合在一起,在进行调用或排序时很方便,由于有了数组,我们可以用数组名引用一系列变量,然后再通过下标索引的方式访问具体元素。数组还有一个特点:数组名表示首元素地址,这就意味着数组跟指针有着密切的联系,或者数组是指针的一种特殊表现形式。......

2022-07-28 17:15:20 355 2

C语言实现课设 “通讯录” 这个是文件版,可以直接作为课设作业交了

C语言实现课设 “通讯录” 这个是文件版,可以直接作为课设作业交了

2022-12-14

C语言实现小游戏 “扫雷” 这个也比较推荐新手学习

C语言实现小游戏 “扫雷” 这个也比较推荐新手学习

2022-12-14

C语言实现小游戏 “三子棋” 适合初学者学习

C语言实现小游戏 “三子棋” 适合初学者学习

2022-12-14

空空如也

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

TA关注的人

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