自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 归并排序(分治)

归并排序(Merge Sort)是一种经典的排序算法,基于分治的思想,它将待排序数组分成两个子数组,分别排序,然后合并这两个已排序的子数组以得到最终的排序结果。

2024-06-03 15:42:36 871 5

原创 二叉树——进阶(递归创建,非递归,广度优先,翻转,深度,对称)

输出当前节点的值,并将当前节点标记为上一个访问过的节点 pre,然后将当前节点设为 NULL,表示已经访问过。最后,将当前节点出栈。1, 非递归遍历树,需要用到数据结构——栈来模拟递归时的过程,并且更加复杂一些,需要判断循环终止条件,循环中对树节点的处理,需要多种数据辅助。1,二叉树是一种结构相对固定的数据,分为根,左节点,右节点,把一颗大树拆分开每部分都是如此,这就有了递归创建的条件。3,比较规则: 对称节点的比较规则是左子树的左节点与右子树的右节点比较,左子树的右节点与右子树的左节点比较。

2024-05-25 12:38:00 1021 4

原创 二叉树——初解

左孩子右兄弟法(Left Child Right Sibling representation)是一种二叉树的表示方法,它将二叉树表示为多叉树的形式,每个节点有两个指针,一个指向其左子节点,另一个指向其右兄弟节点。二叉搜索树(Binary Search Tree,BST):一种特殊的二叉树,其中每个节点的值大于其左子树中的所有节点的值,小于其右子树中的所有节点的值。父节点(Parent Node)、子节点(Child Node):一个节点的直接上级节点称为其父节点,而直接下级节点称为其子节点。

2024-05-14 20:28:52 981 1

原创 数据结构——链表(精简易懂版)

1,链表(Linked List)是一种常见的数据结构,用于存储一系列元素。它由一系列节点(Node)组成,每个节点包含两部分:数据域(存储数据的部分)和指针域(指向下一个节点的指针)。链表的特点是节点在内存中的存储位置不必是连续的,而是通过指针来相互连接。具体可以想象成一个很多个积木连接的蛇链表可以分为单向链表和双向链表两种常见形式单向链表(Singly Linked List):每个节点包含一个指针,指向下一个节点。单向链表只能从头节点开始顺序访问,无法从尾节点快速访问到头节点。(就是上面那种)

2024-05-03 16:54:29 784 6

原创 判断循环链表以及其环入口

做这种题需要假设举例,一定的数学推导,从例子中找出其中的普遍规律,才能快速解题。

2024-05-01 15:40:16 492 2

原创 使用C语言实现简单的贪吃蛇(学不会来砍我兄弟)

Win32 API(Windows API)是微软公司为其Windows操作系统开发的一组应用程序接口。它提供了一系列函数和数据结构,允许开发人员创建Windows应用程序并与操作系统进行交互。Win32 API包含了许多不同的功能,包括窗口管理、图形设备接口、文件和输入输出等。开发人员可以使用Win32 API编写原生的Windows应用程序,控制应用程序的行为以及与用户交互的方式。

2024-04-19 22:45:16 1000 7

原创 C语言程序编译与链接(拓宽视野的不二之选)

include 指令:用于包含其他文件的内容,分为尖括号包含系统头文件(如#include )和双引号包含用户定义的头文件(如#include “myheader.h”)。在C语言中,预处理阶段是编译过程中的第一步,主要是通过预处理器对源代码进行处理,包括宏替换、头文件包含、条件编译等操作。在独⽴的环境中,程序的载⼊必须由⼿⼯安排,也可能是通过可执⾏代码置⼊只读内存来完成。宏替换:预处理器会在编译前将代码中出现的宏名称替换为对应的值,比如将代码中的PI替换为3.14159。

2024-03-27 22:31:43 771 2

原创 震惊!C语言是这样操作文件的!

1,在C语言中,文件指针是一个用于在程序中操作文件的特殊类型指针。文件指针用于跟踪文件中的位置,以便在文件中执行读取和写入操作。2,常见的文件指针类型是FILE,它是C标准库中定义的一种结构类型。通常,我们使用 FILE* 类型的指针来引用一个文件。文件指针的主要作用是1,定位文件位置:文件指针跟踪文件中当前的读/写位置。在文件操作期间,指针会根据读写操作的进行而自动移动到相应的位置。2,进行文件操作:通过文件指针,可以进行文件的读取、写入和定位等操作。在文件操作中,文件指针的一般流程是。

2024-03-27 14:25:41 956 1

原创 BC38 变种水仙花 ——牛客题

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。1,需要函数判断是否为 Lily Number。2,主函数打印五位数的 Lily Number。求出 5位数中的所有 Lily Number。

2024-03-20 13:05:12 171

原创 自定义类型——结构体(如何计算结构体内存)

1,结构体(Structures)是 C 语言中一种用户自定义的数据类型,它可以包含不同类型的数据成员,这些成员可以按照用户的需求进行组织。结构体允许将多个不同类型的变量组合在一起,形成一个新的数据类型,从而更方便地描述和操作复杂的数据。下面是结构体的一些重要特点和用法:2,结构体类型的关键字是 struct + 类型名定义结构体int age;上面的代码定义了一个名为 Person 的结构体,其中包含了三个成员:name、age 和 height,分别表示姓名、年龄和身高。结构体变量的声明。

2024-03-20 12:57:52 1099 1

原创 C语言——神奇的浮点数与整数储存方式

但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE754规定,存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;具体来说,整数在内存中以固定长度的字节存储,可以是1个字节、2个字节、4个字节或8个字节,取决于整数的数据类型(如char、short、int、long等)。⽐如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。⾸先,E为⼀个⽆符号整数,这意味着,如果E为8位,它的取值范围为0 - 255;

2024-03-17 14:26:40 868 2

原创 好玩的字符串函数与内存管理函数(计算机内存的秘密)

/求字符串长度,不包含0//复制字符串到dest//追加src到dest后面,0会被覆盖//比较字符串,直到不同时str1大返回1,相同返回0,str2大返回-1//查找c是否在str中,返回对应地址,否则返回null//找字符串str2是否包含在str1中,同上//分割字符串,delim为分割字符//进阶,限制复制字符数,下面类似原理都是类似的,就不举太多例子了,希望看了能有所收获!

2024-03-14 21:01:17 1051 1

原创 C语言——指针详解

1,定义:指针是一个变量,其值为另一个变量的地址。通过指针,我们可以直接访问内存中的数据。2,本质:在计算机内部,每个变量都存储在内存中的某个位置,这个位置有一个唯一的地址。指针本质上就是存储另一个变量地址的变量。3,指针的作用:指针可以用于动态内存分配、数组操作、函数传参等各种场景。通过指针,可以更高效地访问和处理数据。4,指针的危险性:指针操作需要谨慎,因为错误的指针使用可能导致程序崩溃或内存泄漏。例如,未初始化的指针可能包含随机值,解引用这样的指针可能导致未定义行为。

2024-03-05 21:29:01 841 2

原创 C语言——printf与scanf详解(返回值,占位符)

1,printf与scanf都是c语言中常用的函数,printf用于格式化输出数据到标准输出设备(通常是终端或命令行窗口)。也就是俗称的打印。2,scanf用于从标准输入设备(通常是终端或命令行窗口)读取格式化数据。也就是输入数据。3,很多初学者都只会用printf进行打印输出,用scanf用于读取数据,而不知道其实它们是有返回值的,只不过用的不是很多,但是却有时候很好用,这里来详细介绍一下。

2023-12-28 23:28:12 1047 1

原创 C语言——快速排序

快速排序(Quick Sort)是一种常用且高效的排序算法,它的思想是通过分治法将一个大问题分解成多个小问题来解决。具体而言,快速排序将待排序的数组按照一个基准元素进行划分,并将比基准元素小的元素放在基准元素的左侧,将比基准元素大的元素放在基准元素的右侧,然后对左右两个子数组递归地进行同样的操作,直到每个子数组只包含一个元素为止。快速排序是适用于大部分情况的排序算法,并且效率极高,c++,java内置库中排序一般是用的快速排序的,再次基础上还可以使用一些优化,读者可以自行探索。

2023-12-23 14:48:00 1095

原创 C语言——快速排序算法——堆排序

堆是一个完全二叉树(Complete Binary Tree),其中每个节点的值都大于等于(或小于等于)其子节点的值,这被称为堆的性质。具体来说,如果每个节点的值都大于等于其子节点的值,我们称之为“最大堆”(Max Heap);如果每个节点的值都小于等于其子节点的值,我们称之为“最小堆”(Min Heap)。例如一个最大堆:堆通常使用数组来实现,其中每个元素对应堆中的一个节点。通过索引关系可以方便地找到父节点、左孩子和右孩子。

2023-12-21 14:25:53 1006 5

原创 c语言——插入排序与希尔排序

1.涉及知识点:基本输入输出,分支与循环语句。2.基本思想:将数组分为已排序区间和未排序区间,然后依次从未排序区间取出元素,插入到已排序区间的合适位置。基本思想:将待排序的数组分成若干个较小的子数组,对这些子数组进行插入排序,然后逐步缩小子数组的规模,直至最后整个数组有序。优化方向:希尔排序通过先使数组局部有序,再逐步扩大有序区域的方式,减少了元素的移动次数,从而提高了插入排序的效率。增量序列的选择和插入排序的实现方式对希尔排序的性能有影响,不同的增量序列可能导致不同的排序效果。例如这样的。

2023-12-17 13:05:45 1122 4

原创 c语言——简单扫雷游戏的实现

我们可以用宏定义定义棋盘的大小,又因为棋盘查找雷的时候是查找周围的八个格子,容易越界访问,所以我们的棋盘得设置大一圈,最外圈不显示。现在你可能不懂,不过你继续看下去,你就懂了。首先需要游戏说明,所以得先写一个菜单显示玩法。然后,它得可以循环玩,可以用while设置循环。第一步,得有一个棋盘吧,棋盘我们分为两层,表面棋盘和埋雷棋盘。显而易见,棋盘我们用二维数组创作,我们可以创建两个棋盘,平常显示的表面棋盘,查找时可以刷新棋盘,显示周围的八个格子的雷的个数。第二步,想想需要什么函数。首先,我们得有。

2023-12-10 15:15:11 1021 2

原创 c语言-分支与循环语句

循环语句分为三种,for语句,while语句,和do while语句,分支语句有if判断语句与switch选择语句。它们有相似之处,也有各自的特点。首先,新手最为常用的大概是for语句了,它包含初始化,条件判断,控制变量变化三个部分。格式为for(初始化;判断语句;变量变化语句) { 执行体 };,第一次时执行初始化语句与判断语句,判断通过则执行花括号内的执行体,不通过则不执行。第一次执行后每次回到for中时先执行变量变化语句,在判断执行不执行。一些特殊点要注意的是,for( ; ; ) 循环括号内的语句是

2023-12-02 12:17:15 416 2

原创 学习编程在路上

初学c语言小技巧

2023-11-18 22:11:35 57

空空如也

空空如也

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

TA关注的人

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